end - switch php
¿Cómo puedo romper un bucle externo con PHP? (6)
En el caso de 2 bucles anidados:
break 2;
Estoy buscando romper un bucle for / foreach externo en PHP.
Esto se puede hacer en ActionScript de esta manera:
top : for each(var i:MovieClip in movieClipArray)
{
for each(var j:String in nameArray)
{
if(i.name == j) break top;
}
}
¿Cuál es el equivalente de PHP?
Puedes usar break 2;
para salir de dos bucles al mismo tiempo. No es exactamente lo mismo que tu ejemplo con los bucles "nombrados", pero funcionará.
Puedes usar solo una declaración break-n:
foreach(...)
{
foreach(...)
{
if(i.name == j) break 2; //Breaks 2 levels, so breaks outermost foreach
}
}
Si estás en php> = 5.3, puedes usar etiquetas y goto
, similar al script de acción:
foreach(...)
{
foreach(...)
{
if(i.name == j) goto top;
}
}
top :
Pero goto debe usarse con cuidado. Goto es malvado (se considera una mala práctica)
Use goto?
for($i=0,$j=50; $i<100; $i++)
{
while($j--)
{
if($j==17)
goto end;
}
}
echo "i = $i";
end:
echo ''j hit 17'';
php.net/manual/en/control-structures.break.php dice
break acepta un argumento numérico opcional que le dice de cuántas estructuras de alojamiento anidadas se deben separar.
break 2;
$i = new MovieClip();
foreach($movieClipArray as $i)
{
$nameArray = array();
foreach($nameArray as $n) if($i->name==$n) break 2;
}