tipo de programador
Soy nuevo en PHP y vi el siguiente código en línea. Tiene continue 2
y break
juntos en switch/case
declaración. ¿Qué significa?
foreach ( $elements as &$element ) {
switch ($element['type']) {
case a :
if (condition1)
continue 2;
break;
case b :
if (condition2)
continue 2;
break;
}
// remaining code here, inside loop but outside switch statement
}
showdev
los continue 2
salta directamente a la siguiente iteración de la estructura que está dos niveles atrás, que es el foreach
. los break
(equivalente a break 1
) acaba de terminar el switch
declaración.
El comportamiento en el código que has mostrado es:
Bucle a través $elements
. Si una $element
es tipo “a” y condition1
se cumple, o si es tipo “b” y condition2
se cumple, salta al siguiente $element
. De lo contrario, realice alguna acción antes de pasar al siguiente $element
.
Seguir acepta un argumento numérico opcional que le dice cuántos niveles de bucles envolventes debe saltar hasta el final. El valor predeterminado es 1, saltando así al final del ciclo actual.
PHP continúa ejecutando las declaraciones hasta el final del bloque de cambio, o la primera vez que ve una declaración de ruptura.
Si tiene un interruptor dentro de un ciclo y desea continuar con la siguiente iteración del ciclo externo, use continuar 2.
-
Gracias por su amable respuesta. Por lo tanto, quiere decir que si el tipo es “a” y se cumple la condición 1 o si el tipo es “b” y se cumple la condición 2, el código restante en el bucle cuya instrucción de cambio externo no se ejecutará y saltará a la siguiente iteración en el bucle, ¿verdad?
– tipo de programador
17/10/2014 a las 18:35
-
Sí, eso es correcto.
continue 2
salta directamente a la siguiente iteración delforeach
bucle sin ejecutar ningún código después de laswitch
. Aquí hay una demostración.– showdev
17/10/2014 a las 18:57
-
Consíguelo. Gracias por la amable explicación.
– tipo de programador
17/10/2014 a las 19:06
-
continue acepta un argumento numérico opcional que le dice cuántos niveles de bucles envolventes debe saltar hasta el final. El valor predeterminado es 1, saltando así al final del ciclo actual.
Fuente: http://php.net/manual/en/control-structures.continue.php
continuar y romper son similares en el sentido de que evitarán que algo suceda.
en caso de continuar, detendrá cualquier cosa después de las llaves pero no detendrá el ciclo. La declaración de cambio simplemente sale de esta declaración y continúa con la siguiente declaración.
En caso de interrupción, detendrá la continuación del ciclo completo, finalice el ciclo allí.