J'ai une boucle foreach et une instruction if. Si un match est trouvé, je dois finalement sortir de la foreach.
foreach($equipxml as $equip) {
$current_device = $equip->xpath("name");
if ( $current_device[0] == $device ) {
// found a match in the file
$nodeid = $equip->id;
<break out of if and foreach here>
}
}
php
if-statement
foreach
break
au_stan
la source
la source
Réponses:
if
n'est pas une structure en boucle, vous ne pouvez donc pas "en sortir".Vous pouvez cependant vous échapper
foreach
en appelant simplementbreak
. Dans votre exemple, cela a l'effet souhaité:Juste pour être complet pour les autres qui butent sur cette question à la recherche d'une réponse.
break
prend un argument facultatif, qui définit le nombre de structures de boucle qu'il doit rompre. Exemple:Sortie résultante:
la source
switch($a) { case 'x': switch($b) { case 'x': break 2; }; break; }
lesbreak 2
feuilles internes des deux instructions switch.Utilisez simplement
break
. Cela suffira.la source
if ($abort_if_block) break;
venait de cette déclaration que j'avais initialement définiebreak 2
et elle a échoué. merciUne manière plus sûre d'aborder la rupture d'une boucle
foreach
ouwhile
en PHP consiste à imbriquer une variable de compteur incrémentielle etif
conditionnelle à l'intérieur de la boucle d'origine. Cela vous donne un contrôle plus strict quebreak;
ce qui peut causer des ravages ailleurs sur une page compliquée.Exemple:
la source
endwhile
instruction, vous devez écrirewhile (..): ...; endwhile;
- notez les deux points ici aprèswhile
!Pour ceux d'entre vous qui atterrissent ici mais cherchent comment sortir d'une boucle qui contient une instruction include, utilisez return au lieu de break ou continue.
Si vous voulez casser en étant dans do_this_for_even.php, vous devez utiliser return. L'utilisation de break ou continue renverra cette erreur: Impossible de casser / continuer 1 niveau. J'ai trouvé plus de détails ici
la source