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?
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;
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 est mal (considéré comme une mauvaise pratique)
Vous pouvez utiliser break 2;
pour sortir de 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.
$i = new MovieClip();
foreach($movieClipArray as $i)
{
$nameArray = array();
foreach($nameArray as $n) if($i->name==$n) break 2;
}
Utilisez goto?
for($i=0,$j=50; $i<100; $i++)
{
while($j--)
{
if($j==17)
goto end;
}
}
echo "i = $i";
end:
echo 'j hit 17';