我有这个代码从我的数组中获取3个随机值:
$maps_clean = array_filter($find_league_maps);
$random_maps = array_rand($maps_clean,3);
$league_match_maps = ",".$maps_clean[1].",".$maps_clean[2].",".$maps_clean[3].",";
只要数组至少有3个值,就可以正常工作。现在我想修改我的代码,这样当我想要比我的数组中更多的随机值时,它只会再次从数组中获取新的代码。是的,这意味着我可以多次获得一些值。
我该怎么做?
答案 0 :(得分:1)
您可以使用简单的while循环并在其中使用shuffle()
数组,然后使用array_slice()
获取所需数量的随机元素。现在,如果你想要比你有数组元素更多的随机值,它会简单地占用整个数组,进入下一次迭代并从新的混洗数组中获取所需的其余值。
代码
<?php
$arr = [1,2,3,4];
$random = 5;
$result = [];
while(count($result) != $random){
shuffle($arr);
$result = array_merge($result, array_slice($arr, 0, $random - count($result)));
}
print_r($result);
?>
答案 1 :(得分:0)
您可以使用$maps_clean
替换具有相同数组填充键的元素。
$maps_clean = array_replace(array_fill(1, 3, null), array_filter($find_league_maps));
此处array_fill
返回:
array(3) {
[1]=>
NULL
[2]=>
NULL
[3]=>
NULL
}
及其元素由array_filter($find_league_maps)
返回的具有相同键的元素替换。
答案 2 :(得分:0)
默认情况下,数组键从0开始,请尝试使用
FileProvider
$league_match_maps = ",".$maps_clean[0].",".$maps_clean[1].",".$maps_clean[2].",";
的输出是什么?