question表中有5笔chapter=1的资料,它们的id号是从1-5。为什么用array_rand()函数后会得到一个0的值呢?<?php
mysql_connect("localhost","root","123456");
mysql_select_db("test");define("NUM",3);//定义随机取题的数量
$id=array();//定义一个数组$id,用它接收符合指定条件的试题id
$query=mysql_query("select qid from question where chapter='1'");
while($row=mysql_fetch_row($query)){
$id[]=$row[0];//用数组$id接收值
}
print_r($id);//到这一步都没错,可以正常打印Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
echo "<br>";
print_r(array_rand($id,NUM));//开始错误,会输出Array ( [0] => 0 [1] => 1 [2] => 2 )
echo "<br>";
$rand_id=array_rand($id,NUM);//在数组中随机获取X道试题的id号,并赋给数组
print_r($rand_id);//还是错的,Array ( [0] => 0 [1] => 4 [2] => 3 )for($i=0;$i<count($rand_id);$i++){
$exam_id=$input[$rand_id[$i]];//用$exam_id存放要输出到页面的试题id
}?>怎么老有0输出呢?按理说$id里有1、2、3、4、5这5个值,从数组$id里随机取出任意个值都不可能出现0呀!
百思不解、、也没有人看明白的,指点迷津啊!

解决方案 »

  1.   

    如果你只取出一个,array_rand() 返回一个随机单元的键名,否则就返回一个包含随机键名的数组。这样你就可以随机从数组中取出键名和值。 返回的仅仅是键名!0是你的数组里面的键名,所以没有错
      

  2.   

    为什么会出现值为0的情况呢?谁帮忙看看?<?php
    $input = array("1", "2", "3", "4", "5");
    $rand_keys = array_rand($input, 3);
    print_r($rand_keys);
    ?>
      

  3.   

    想明白了,array_rand()随机获取的是$input的key呀~~~~汗噢!
      

  4.   

    <?php
    $input = array("1", "2", "3", "4", "5");
    $rand_keys = array_rand($input, 3);//随机从数组中取3个键
    print_r($rand_keys);foreach($rand_keys as $i) {
      echo '<br />'.$input[$i]; //按键输出数组元素
    }
    ?>php 数组的下标是从 0 开始的