Как вернуть массив случайных ключей? - PullRequest
0 голосов
/ 20 декабря 2018

Позвольте мне спросить вас, как вернуть любые три случайных числа в массив, которые отличаются от других чисел в массиве.

$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 голосов
/ 20 декабря 2018

Вместо того, чтобы угадывать числа и добавлять их, если они еще не существуют, создается массив из оставшихся чисел (с использованием комбинации 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(), чтобы извлечь первые 3 числа ...

$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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...