php随机数组

时间:2010-05-25 02:26:56

标签: php

我试图得到一个像这样的随机数组

srand((float) microtime() * 10000000);
$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$rand_keys = array_rand($input, 2);
echo $input[$rand_keys[0]] . "\n";
echo $input[$rand_keys[1]] . "\n";
如果我有$rand_keys = array_rand($input, 2);$rand_keys = array_rand($input, 5);,它会随机显示2个数字但由于我希望所有5个数字显示它不起作用。什么造成的。我需要使用array_rand。感谢

3 个答案:

答案 0 :(得分:2)

array_rand按照原始数组中存在的顺序对键进行排序。如果您想要一个混洗数组,请先使用shuffle函数:

$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
shuffle($input);
$rand_keys = array_rand($input, 5);
for ($i = 0; $i < count($rand_keys); $i++) {
    echo $input[$rand_keys[$i]] . "\n";
}

当然,如果您访问所有五个,则根本不需要调用array_rand,但如果您改变其第二个参数,这仍然有效。

顺便说一句,调用srand函数是不必要的 - 从PHP 4.2开始就为你完成。

答案 1 :(得分:0)

此功能的更改日志:

5.2.10   The resulting array of keys is no longer shuffled.

此函数不以随机顺序返回元素,它返回随机元素。 因此,如果您想从数组中获取5个随机元素,它只会为您提供所有元素。

答案 2 :(得分:0)

我假设你不想在原始数组上使用shuffle,因为它会重新排列键?如果是这样,那么只需用随机键对数组进行洗牌,保持输入数组不变。

$rand_keys = array_rand($input, 5);
shuffle($rand_keys);
print_r($rand_keys);
/**
 * Sample output
 Array
 (
    [0] => 0
    [1] => 1
    [2] => 4
    [3] => 2
    [4] => 3
 )
 */