-1

在模拟测试中,我将问题的 id 存储在一个数组中,我希望在测试开始时从这个数组中随机生成 id。当 id 小于 10 时,它会生成正确的数字,但是当它存储大于 10 时,例如 20、21、22 .. 然后它也会生成 1-10 的数字。我希望它从存储在这个数组中的数字生成随机数。thnax..

$ids= array('20','21','22','23','24','25','26','27','28','29','30','31','32',);
     $getIds=mysql_query("select * from mock_test_question where status='1' and question_level='FINAL' ") or die(mysql_error());
while($data=mysql_fetch_array($getIds))
{
    array_push($ids, $data['id']);
}
print_r($ids);
echo "</br>";
$rand_keys = array_rand($ids,5);
$_SESSION['quesid']=$rand_keys;
print_r($rand_keys);
4

3 回答 3

2

array_rand 返回 KEYS(数组位置)而不是实际值。要获取值:

echo $ids[$rand_keys];
于 2013-10-17T12:23:09.423 回答
0

这应该给你一个随机数

$randomValues = array('20','21','22','23','24','25','26','27','28','29','30','31','32');
$randomValuesIndex = array_rand($randomValues, 1);
$randomValue = $randomValues[$randomValuesIndex];

echo $randomValue."\n";

生成随机数的示例循环

$randomValues = array('20','21','22','23','24','25','26','27','28','29','30','31','32');

for ($i = 1; $i < 30; $i++)
{
    $randomValuesIndex = array_rand($randomValues, 1);
    $randomValue = $randomValues[$randomValuesIndex];

    echo $randomValue."\n";
}
于 2013-10-17T12:31:12.887 回答
0
$count = count($ids) - 1; # note that its -1 because array keys start from 0
echo $ids[rand(0,$count)];

这是从数组中获取随机元素的快速方法

PS>这里是完整的代码生成数字和用法..

$ids = array();
for($i=20;$i<=32;$i++){ $ids[]=$i; }
$count = count($ids) - 1;

echo $ids[rand(0,$count)];
echo $ids[rand(0,$count)];
echo $ids[rand(0,$count)];
于 2013-10-17T12:22:38.733 回答