Fab*_*ler 9 php arrays random performance shuffle
我有以下代码$n从$arrayPHP中的数组中选择元素:
shuffle($array);
$result = array_splice($array, 0, $n);
Run Code Online (Sandbox Code Playgroud)
给定一个大数组但只有少数元素(例如5out 10000),这是相对较慢的,所以我想优化它,以便不是所有元素都必须被洗牌.值必须是唯一的.
我正在寻找最有效的替代方案.我们可以假设$array没有重复并且是0索引的.
$randomArray = [];
while (count($randomArray) < 5) {
$randomKey = mt_rand(0, count($array)-1);
$randomArray[$randomKey] = $array[$randomKey];
}
Run Code Online (Sandbox Code Playgroud)
这将提供5个元素,没有重复,非常快.密钥将被保留.
注意:您必须确保$ array有5个或更多元素或添加某种检查以防止无限循环.