如何返回随机键数组?

时间:2018-12-20 07:26:03

标签: php loops

让我问您如何将与数组中其他数字不同的任意三个随机数返回到数组中。

$checkrandom=array(1,2,3,4);
for($i=0;$i<3;$i++){
    $random=RAND(1,10);
    if(!in_array($random,$checkrandom)){
        array_push($checkrandom,$random);
    }else{
        //do something
    }
}

1 个答案:

答案 0 :(得分:3)

而不是猜测数字并添加它们(如果尚不存在),而是创建剩余数字的数组(使用range()array_diff()的组合)。然后,它从该数组中选取数字(使用shuffle()array_shift()),并将其添加到$checkrandom的末尾。

$checkrandom=array(1,2,3,4);
$numbers = array_diff(range(1,10), $checkrandom);
for($i=0;$i<3;$i++){
    shuffle($numbers);
    $checkrandom[]=array_shift($numbers);
}
print_r($checkrandom);

或者,正如deceze指出的那样,只需将剩下的数组改组并使用array_slice()提取前三个数字...

$checkrandom=array(1,2,3,4);
$numbers = array_diff(range(1,10), $checkrandom);
shuffle($numbers);
$checkrandom = array_merge($checkrandom, array_slice($numbers, 0, 3));
print_r($checkrandom);