我有一个包含30个值的数组,我需要从这个数组中提取3个不同的随机值。我该怎么办?
答案 0 :(得分:18)
从PHP手册中无耻地窃取:
<?php
$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";
?>
请注意,从PHP 5.2.10起,您可能希望对通过shuffle($rand_keys)
返回的密钥进行随机化(随机化),否则它们将始终按顺序排列(最小索引优先)。也就是说,在上面的例子中,你可以得到“Neo,Trinity”,但从不“Trinity,Neo”。
如果随机元素的顺序不重要,那么上面的代码就足够了。
答案 1 :(得分:7)
我不确定为什么要使用array_rand()
,因为它只是一个额外的函数调用似乎没有理由。只需shuffle()
并切片前三个元素:
shuffle($array);
print_r(array_slice($array, 0, 3));
答案 2 :(得分:4)
使用shuffle($array)
然后array_rand($array,3)