Czy istnieje sposób na zatrzymanie funkcji anonimowej array_walk
?Przerwa array_walk z anonimowej funkcji
Oto kilka przykładowy kod (który działa), aby pokazać, co mam na myśli, że sprawdza, czy tablica ma tylko wartości numeryczne.
$valid = true;
array_walk($parent, function ($value) use (&$valid) {
if (!is_numeric($value)) {
$valid = false;
}
});
return $valid ? 'Valid' : 'Invalid';
Jeśli mam wystarczająco duży wachlarz, a pierwsza pozycja jest nieważne, reszta (redundantne) kontrole są jeszcze zrobione, więc chciałbym zatrzymać egzekucję.
Używanie break
/continue
nie działa (błąd: Fatal error: Cannot break/continue 1 level in ...
).
Uwaga: Nie chcę przepisać kod, po prostu chcę wiedzieć IF jest to możliwe.
Możesz * rzucić, a następnie złapać wyjątek. Oczywiście to niewłaściwe podejście, ale jest to możliwe. –
Nie możliwe bezpośrednio, ale gdzie dokładnie narysujesz linię do przepisywania kodu? (Rozwiązanie 'Exception' brzmi, jakby zadziałało, ale wolałbym użyć prostego' foreach' niż tego). – Jon
@Jon: Cóż, byłem ciekawy, czy było to możliwe dla takich funkcji. Nie chciałbym używać 'for' /' foreach', to tyle (głównie teoretyczne pytanie :)). Anthony, powinieneś to opublikować jako odpowiedź. –