我有这样的代码从我的数组中获得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个值,这种方法就会起作用。现在我想修改我的代码,这样当我想要比数组中更多的随机值时,它就会再次从数组中获得新的值。是的,这意味着我可以不止一次地拥有一些价值观。
我该怎么做?
您可以使用一个简单的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);
?>
您可以使用$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
}
并且其元素被CCD_ 5返回的具有相同密钥的元素所替换。
默认情况下,数组键从0开始,因此,请尝试使用
$league_match_maps = ",".$maps_clean[0].",".$maps_clean[1].",".$maps_clean[2].",";
count($maps_clean)
的输出是什么?