sortir de si for et foreach
J'ai une boucle foreach et une instruction if. Si une correspondance est trouvée, j'ai besoin de finalement sortir de la boucle 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>
}
}
- pour php, pas de js. je ne peux pas croire qu'ils se comportent de la même.
- gee - je dois l'arrêter à l'aide de jQuery tellement. pourquoi cette obtenir un downvote? +1, tout à fait raisonnable et bien posé la question.
- j'ai seulement posé la question parce que (pour quelque raison que ce soit), je ne pouvais pas envelopper la tête autour de l'php pause doc et leurs exemples. tous les bons. je ne suis pas ici pour obtenir des badges et des points, tout beaux réponses.
Vous devez vous connecter pour publier un commentaire.
if
n'est pas une structure de boucle, de sorte que vous ne peut pas "sortir d'elle".Vous pouvez, cependant, de briser la
foreach
en appelant simplementbreak
. Dans votre exemple, il a l'effet désiré:Juste pour être complet, pour les autres qui trébuchent sur cette question, la recherche d'une réponse..
break
prend un argument optionnel, qui définit combien de les structures en boucle il devrait casser. Exemple:Résultant de sortie:
Si - pour une raison obscure - vous voulez
break
d'unif
instruction (qui n'est pas une structure de boucle et donc de ne pas cassable par définition), vous pouvez simplement envelopper votreif
dans une petite structure de boucle de sorte que vous pouvez sauter hors de ce bloc de code.Veuillez noter que ce est un total de hack et normalement vous ne voulez pas le faire:
L'exemple ci-dessus est prise à partir d'un commentaire dans le PHP docs
Si vous vous demandez à propos de la syntaxe: Il fonctionne en raison d'une syntaxe abrégée est utilisé ici. L'extérieur des accolades peuvent être laissés de côté parce que la structure de boucle ne contient qu'une seule instruction:
if ($foo) { .. }
.Un autre exemple:
do $i++; while ($i < 100)
est équivalent àdo { $i++; } while ($i < 100)
.Simplement utiliser
break
. Qui va le faire.if ($abort_if_block) break;
j'avais initialement mis enbreak 2
et il a échoué. merciUn moyen plus sûr à l'approche de la rupture d'un
foreach
ouwhile
boucle en PHP est d'imbriquer une l'incrémentation de la variable compteur etif
conditionnelle à l'intérieur de la boucle d'origine. Cela vous donne plus de contrôle quebreak;
qui peut causer des ravages ailleurs sur un complexe de page.Exemple:
Pour ceux d'entre vous en débarquant ici, mais de chercher comment sortir d'une boucle qui contient une instruction include utilisation retour au lieu de se briser ou de continuer.
Si vous voulez casser en étant à l'intérieur do_this_for_even.php vous avez besoin d'utiliser de retour. À l'aide de break ou continue sera de retour cette erreur: Impossible de pause/continuer de 1 niveau. J'ai trouvé plus de détails ici