array_rand在PHP中没有按预期工作

时间:2016-05-04 05:49:48

标签: php arrays random php-5.6

我正在玩PHP,因为我刚开始接受培训。我遇到了返回随机索引的array_rand函数,您可以控制所需的随机索引数。但是,如果随机索引的数量保持等于数组的实际长度怎么办?我试过了,结果令人惊讶。

<?php
$arr = array(1,2,3,4,5,6);
$temp = array_rand($arr,6);
foreach($temp as $r){
    echo $arr[$r]." ";
}
?>

因此,我将所有索引随机化并再次打印相同的数组,但是按照array_rand的顺序返回。请注意,我没有为这段代码寻找替代方案,因为我只是在练习。我想知道的是随机函数返回Array的原因([0] =&gt; 0 [1] =&gt; 1 [2] =&gt; 2 [3] =&gt; 3 [4] =&gt; 4 [5 ] =&gt; 5)[如果你打印array_rand结果]?为什么在这种情况下它不是随机的?

2 个答案:

答案 0 :(得分:3)

array_rand是从给定数组中选择一些随机索引。例如,它可以为您提供1,3,4个索引或3,5,6个索引。但不是5,2,4(至少功能的目的不是那样)。

如果要为数组随机化索引,则必须使用shuffle

http://php.net/manual/en/function.shuffle.php

答案 1 :(得分:0)

在arry_rand,shuffle()之后再添加一个步骤;所以你的代码将是:

<?php
$arr = array(1,2,3,4,5,6);
$temp = array_rand($arr,6);
shuffle($temp);
foreach($temp as $r){
    echo $arr[$r]." ";
}
?>

因为预先。答案解释了这个意思。