繁体   English   中英

从PHP中的另一个数组获取随机值数组的最简单方法

[英]Easiest way to get an array of random values from another array in PHP

我想知道从PHP数组中获取随机值数组的最简单/最干净的方法是什么。 获取随机键数组很容易,但是似乎没有立即获取值数组的功能

我发现的最简单方法是:

$tokens = ['foo', 'bar', '...'];
$randomValues = array_map(function($k) use ($tokens) {
    return $tokens[$k];
}, array_rand($tokens, rand(7, 20)))

这将从$tokens变量返回7-20个随机值。 但是,这看起来很丑,乍一看还不清楚它的作用。

如果您不想修改$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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM