while循环的Array_rand()没有返回值?

时间:2016-04-09 16:00:51

标签: php mysql arrays

我有一个t1 mysql表。

以下是数据:

+-------+-------------+
| ID    | type        |
+---------------------+
| 1     | a           |
| 2     | a           |
| 3     | b           |
| 4     | a           |
+---------------------+

我希望array_rand输入类型array_rand(1,2,4);

我尝试编码如下:

$qadfirst = DB::query("SELECT * FROM ".DB::table('t1')." WHERE type = 'a'");
while($radfirst = DB::fetch($qadfirst)){
    $arr = array($radfirst['id']);
    implode(",",$arr);
    $random_keys=array_rand($arr,1);
    echo $arr[$random_keys[0]]."<br>";
};

我使用w3school的$random_keys,但仍然无法正常工作,如何使编码工作?谢谢。

1 个答案:

答案 0 :(得分:1)

这一行  $arr = array($radfirst['id']);每次都会替换$arr的值 从循环内的数据库中获取一个ID,这将导致一个数组在循环结束时只为其分配一个值。

$arr array(1) 
  integer 4

做这样的事情

<?php
  $i = 0;
  while($radfirst = DB::fetch($qadfirst)){
    $arr[$i++] = $radfirst['id'];
  }
  $random_keys = array_rand($arr, 1);
  echo $arr[$random_keys]."<br>";
?>

当您从数据库循环访问ID时,获取ID并将其分配给$arr类型数组,并使用$i或您选择的任何变量递增索引值。

在循环之外,使用array_rand($arr, 1)获取随机密钥并分配给$random_keysrandom_keys的值将其用作$arr的索引值。 $arr[$random_keys]