if
non è una struttura ad anello, quindi non è possibile "rompere".
È tuttavia possibile uscire dallo foreach
semplicemente chiamando break
. Nel tuo esempio ha l'effetto desiderato:
foreach($equipxml as $equip) {
$current_device = $equip->xpath("name");
if ($current_device[0] == $device) {
// found a match in the file
$nodeid = $equip->id;
// will leave the foreach loop and also the if statement
break;
}
this_command_is_not_executed_after_a_match_is_found();
}
Solo per completezza per gli altri che imbattervi in questo domanda in cerca di una risposta ..
break
prende un argomento opzionale, che definisce quanti strutture di loop che dovrebbero rompersi. Esempio:
foreach (array('1','2','3') as $a) {
echo "$a ";
foreach (array('3','2','1') as $b) {
echo "$b ";
if ($a == $b) {
break 2; // this will break both foreach loops
}
}
echo ". "; // never reached
}
echo "!";
risultante uscita:
1 3 2 1!
Se - per qualche oscura ragione - si vuole break
fuori di un if
dichiarazione (che non non è una struttura ad anello e quindi fragile per definizione), si può semplicemente avvolgere il vostro if
in un piccolo ciclo struttura in modo da poter saltare fuori da quel blocco di codice.
Si prega di notare che questo è un hack totale e normalmente non si vuole fare questo:
do if ($foo)
{
// Do something first...
// Shall we continue with this block, or exit now?
if ($abort === true) break;
// Continue doing something...
} while (false);
L'esempio precedente è preso da un comment in the PHP docs
Se vi chiedete sulla sintassi: funziona perché qui viene usata una sintassi abbreviata. Le parentesi graffe esterne possono essere tralasciate perché la struttura del loop contiene solo una singola istruzione: if ($foo) { .. }
.
Un altro esempio:
do $i++; while ($i < 100)
equivale a do { $i++; } while ($i < 100)
.
per PHP non js. non posso presumere che si comportino allo stesso modo. –
gee: devo smettere di usare jQuery così tanto. perché questo ha avuto un downvote? +1, domanda perfettamente ragionevole e ben posta. – mrtsherman
ho fatto solo la domanda perché (per qualsiasi motivo) non potevo girare la testa intorno al documento di php break e ai loro esempi. tutto bene però. non sono qui per ottenere badge e punti, solo belle risposte. –