C'è un modo per arrestare uno array_walk
dall'interno della funzione anonima?Interrompe array_walk dalla funzione anonima
Ecco un esempio di codice (che funziona) per mostrare cosa intendo, che controlla se un array ha solo valori numerici.
$valid = true;
array_walk($parent, function ($value) use (&$valid) {
if (!is_numeric($value)) {
$valid = false;
}
});
return $valid ? 'Valid' : 'Invalid';
Se ho una grande gamma abbastanza, e la prima voce è valida, il resto dei controlli (ridondante) sono ancora fatto, quindi vorrei fermare l'esecuzione.
L'utilizzo di break
/continue
non funziona (errore: Fatal error: Cannot break/continue 1 level in ...
).
Nota: Non voglio riscrivere il codice, voglio solo sapere SE questo è possibile.
Si * potrebbe * lanciare, quindi prendere, un'eccezione. Certo, è l'approccio sbagliato, ma è possibile. –
Non possibile direttamente, ma dove esattamente si disegna la linea per riscrivere il codice? (La soluzione 'Exception' sembra funzionare, ma prima userei un semplice' foreach' piuttosto che farlo). – Jon
@Jon: Beh, ero curioso di sapere se fosse possibile per funzioni come questa. Non mi piacerebbe usare 'for' /' foreach', questo è tutto (principalmente una domanda teorica :)). Anthony, dovresti postarlo come risposta. –