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