Как вернуть массив случайных ключей?

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

$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

Решение

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

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector