-1

模擬テストでは、質問のIDを配列に保存し、テストの開始時にこの配列からランダムにIDを生成したいと考えています。id が 10 未満の場合は正しい数値を生成しますが、20、21、22 のように 10 を超える値を格納すると、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
$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 に答える