我想知道从 PHP 中的数组中获取随机值数组的最简单/最干净的方法是什么。获取随机键数组很容易,但似乎没有立即获取值数组的功能
我发现的最简单的方法是:
$tokens = ['foo', 'bar', '...'];
$randomValues = array_map(function($k) use ($tokens) {
return $tokens[$k];
}, array_rand($tokens, rand(7, 20)))
这会从变量返回 7-20 个随机值$tokens
。然而,这看起来很丑陋,乍一看还不清楚它的作用。
如果您不想修改 $tokens
数组,您可以翻转随机生成的数组键,然后使用 array_intersect_key
.我认为它比array_map
方法更具可读性,但我认为这是相当主观的。
$randomKeys = array_flip(array_rand($tokens, rand(7, 20)));
$randomValues = array_intersect_key($tokens, $randomKeys);
如果你不关心$tokens
是否被修改,shuffle''slice方法似乎非常简单。
只需随机播放,然后切片随机数量的元素:
shuffle($tokens);
$result = array_slice($tokens, 0, rand(7, 20));
如果你不想修改数组,那么显然只需分配另一个变量并使用它:
$temp = $tokens;