我有一个包含30个值的数组,我需要从这个数组中提取3个不同的随机值。我该怎么做?
我不确定为什么要使用array_rand()
,因为这似乎没有理由多调用一个函数。只需使用shuffle()
然后选择前三个元素即可:
shuffle($array);
print_r(array_slice($array, 0, 3));
$array
非常大,这里可能会存在性能问题。 - yunzenarray_slice()
在非常大的数组上要慢得多。尽管如此,即使有1,000,000个键,它也只需要0.124秒,而array_rand()
只需要0.004秒。对于大多数情况来说,这并不重要,但知道这一点很好! - But those new buttons though..<?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";
?>
https://www.php.net/array_rand
请注意,从PHP 5.2.10开始,您可能希望通过shuffle($rand_keys)
来随机排列返回的键,否则它们将始终按顺序排列(最小索引优先)。也就是说,在上面的示例中,您可能会得到"Neo, Trinity",但永远不会得到"Trinity, Neo"。使用shuffle($array)
方法,然后再使用array_rand($array,3)
方法。
shuffle
函数? - user142162