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