146 votes

Comment puis-je casser une boucle externe avec PHP?

Je cherche à casser une boucle externe for / foreach en PHP.

Cela peut être fait dans ActionScript comme suit:

 top : for each(var i:MovieClip in movieClipArray)
{
    for each(var j:String in nameArray)
    {
        if(i.name == j) break top;
    }
}
 

Quel est l'équivalent PHP?

318voto

lucian303 Points 735

Dans le cas de 2 boucles imbriquées:

 break 2;
 

http://php.net/manual/en/control-structures.break.php

43voto

Framework Points 32799

Manuel PHP dit

break accepte un argument numérique facultatif lui indiquant le nombre de structures englobantes imbriquées devant être divisées.

 break 2;
 

22voto

Vous pouvez utiliser simplement une déclaration break-n:

 foreach(...)
{
    foreach(...)
    {
        if(i.name == j) break 2; //Breaks 2 levels, so breaks outermost foreach
    }
}
 

Si vous êtes en php> = 5.3, vous pouvez utiliser les labels et goto s, comme dans le script d'action:

  foreach(...)
{        
    foreach(...)
    {
        if(i.name == j) goto top;
    }
}
top :
 

Mais goto doit être utilisé avec précaution. Goto is evil (considéré comme une mauvaise pratique)

13voto

Jon Points 194296

Vous pouvez utiliser break 2; pour rompre deux boucles en même temps. Ce n'est pas tout à fait la même chose que votre exemple avec les boucles "nommées", mais cela fera l'affaire.

7voto

Jordan Arseno Points 3979
    $i = new MovieClip();
    foreach($movieClipArray as $i)
    {
          $nameArray = array();
          foreach($nameArray as $n) if($i->name==$n) break 2;
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X