Есть ли способ остановить array_walk
внутри анонимной функции?Перерыв array_walk от анонимной функции
Вот пример кода (который работает), чтобы показать, что я имею в виду, который проверяет, имеет ли массив только числовые значения.
$valid = true;
array_walk($parent, function ($value) use (&$valid) {
if (!is_numeric($value)) {
$valid = false;
}
});
return $valid ? 'Valid' : 'Invalid';
Если у меня есть достаточно большой массив, а первая запись является недействительным, остальная часть (избыточных) проверок все еще сделано, поэтому я хотел бы, чтобы остановить выполнение.
Использование break
/continue
не работает (ошибка: Fatal error: Cannot break/continue 1 level in ...
).
Примечание: Я не хочу, чтобы переписать код, я просто хочу знать IF это возможно.
Вы * можете * бросить, затем поймать, Исключение. Конечно, это неправильный подход, но это возможно. –
Невозможно напрямую, но где именно вы рисуете линию для переписывания кода? (Решение «Исключение» похоже на работу, но я бы скорее использовал простой «foreach», чем это сделал. – Jon
@Jon: Ну, мне было любопытно, можно ли выполнять такие функции. Я бы не хотел использовать 'for' /' foreach', вот и все (в основном теоретический вопрос :)). Энтони, вы должны опубликовать это как ответ. –