从数组中选择3个不同的随机值
从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)
返回的密钥,否则它们将始终按顺序(最小索引第一)。也就是说,在上面的例子中,你可以得到“三位一体”,但从来没有“三位一体,新生”。
如果随机元素的顺序不重要,那么上面的代码就足够了。
使用shuffle($array)
然后array_rand($array,3)
你叫'shuffle'的任何特定原因? – 2010-10-15 20:16:15
只是为了确保它真正随机:) ..背后的历史是,去年使用array_rand我看到不是如此随机的结果(连续运行中的类似项目),所以使它更随机一点我会首先洗牌数组,然后提供给array_rand函数,它似乎给了更多的随机值。 – 2010-10-15 20:18:05
你仍然需要从键到值.... – 2015-10-26 12:46:16
我不确定为什么要打扰使用array_rand()
,因为它只是一个看似没有理由的额外函数调用。简单地shuffle()
,切片前三个元素:
shuffle($array);
print_r(array_slice($array, 0, 3));
的[从阵列获取的PHP随机值的子集(
更清洁,这应该是一个公认的答案 – 2016-08-24 12:03:13
可能重复http://stackoverflow.com/questions/3504401/get-a-subset-of -random-values-from-an-array-php) – kennytm 2010-10-15 20:13:26