array_rand从数组返回不正确的值

时间:2014-02-13 02:41:02

标签: php arrays random

使用array_rand时遇到问题。

问题是我将数据库中的一些值调用到一个数组中,然后我array_rand随机选择其中一个值(你没说)。

$query = mysqli_query($con,"SELECT * FROM random");

while ($row = mysqli_fetch_assoc($query)) {
    $num[] = $row["id"];
}

如果我做print_r($num);,我会得到以下内容:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
    [9] => 10
    [10] => 11
    [11] => 12
    [12] => 13
    [13] => 14
)

但在执行array_rand($num);时,我随机获取的值之一是0,如您所见,它不在列表中,因此使用此随机值的其余代码如果它出现就行不通。

我在谷歌搜索了这个问题,但找不到解决方案,如果之前已经提到过,我很抱歉。

希望你能帮我解决这个问题。

提前致谢。

3 个答案:

答案 0 :(得分:2)

正如文档所述, array_rand() 会为随机条目返回

所以你必须使用$num[array_rand($num)]来获取价值。

答案 1 :(得分:1)

在这种情况下,为什么不在查询中使用RAND()并保存一些工作&资源?

$query = mysqli_query($con, "SELECT * FROM random ORDER BY RAND() LIMIT 1");
$result = mysqli_fetch_object($query);

答案 2 :(得分:0)

来自array_rand的文件(强调补充):

  

从数组中挑选一个或多个随机条目,并返回随机条目的(或键)。

0是您返回的第一个元素的关键