values - switch php rangos
Break out forloop pero dentro de la declaración switch php (4)
Cuando normalmente quiero salir de un bucle foreach antes de que todas las iteraciones se hayan completado, simplemente uso un descanso; declaración. p.ej
foreach($nodelist as $node) {
if($metCriteria) {
break;
}
}
Pero mi próximo ejemplo tiene una declaración de cambio. Y si se cumple una de las condiciones, entonces necesito romper con el ciclo foreach. (El problema es que la ruptura se usa para la declaración de cambio)
foreach($nodelist as $node)
{
switch($node->nodeName) {
case "a" :
//do something
break;
case "b" :
//break out of forloop
break;
}
}
¿Simplemente configuro una variable en la instrucción switch y luego la rompo? p.ej
$breakout = false;
foreach($nodelist as $node)
{
switch($node->nodeName) {
case "a" :
//do something
break;
case "b" :
$breakout = true;
break;
}
if($breakout === true) break;
}
¿Es esta la mejor solución? o esto de otra manera?
La respuesta aceptada no tiene un ejemplo práctico, déjame compartir contigo.
break 2
significa salir de ambos, lazo e interruptor.
$i = 0;
while (++$i) {
switch ($i) {
case 5:
echo "At 5<br />/n";
break 1; /* Exit only the switch. */
case 10:
echo "At 10; quitting<br />/n";
break 2; /* Exit the switch and the while. */
default:
break;
}
}
Simplemente use el {''s - evitará que el código "se ejecute". Mucho mejor que la declaración de interrupción si me preguntas.
del manual ( break )
break acepta un argumento numérico opcional que le dice de cuántas estructuras de alojamiento anidadas se deben separar.
descanso 2;
descanso x saldrá de esos muchos niveles