У меня есть эта функция, которая, как предполагается, для генерации случайных чисел и убедиться, что они не находятся в массиве исключений, но у меня есть этот угол случай:array_search рекурсивная функция PHP
Он не выполняет условий при:
Exceptions Array
(
[0] => 84
[1] => 94
[2] => 46
)
print_r Ouput: номер генерируемый 46 мы имеем целый ряд матч им будет вернуться в 84
так это делает первый чек Corre ctly, но не рекурсивный чек, поэтому он возвращает мне дублирующее значение 84, является ли мое условие неправильным?
function randWithout($from, $to, array $exceptions) {
//sort($exceptions); // lets us use break; in the foreach reliably
echo '<pre>';
print_r($exceptions);
echo '</pre>';
$number = mt_rand($from, $to);
print_r('number generated is' . $number);
if(array_search($number,$exceptions) != FALSE)
{
echo 'we have a match';
do {
$number = mt_rand($from, $to);
} while(array_search($number,$exceptions) === FALSE);
}
print_r('number im going to return is'. $number);
return $number;
}
Возможно, я просто слепой, но я не вижу рекурсии в приведенном выше. Не могли бы вы указать на это? – Daedalus
'while (array_search ($ number, $ exceptions) === FALSE)' but 'im think Мне просто нужно 'return $ number' внутри, если цикл – Edward
Рекурсия - это когда функция вызывает себя. Это не происходит выше. – Daedalus