2011-02-17 33 views
22

que tienen una matriz PHP $numbers = array(1,2,3,4,5,6,7,8,9)Saltar iteración actual

si estoy bucle sobre ella usando un foreach foreach($numbers as $number)

y tienen una sentencia if if($number == 4)

lo que sería la línea de código será después de que ese ¿omitiría algo después de esa línea e iniciaría el ciclo en 5? romper, regresar, salir?

Respuesta

51

Está buscando la declaración continue. También es útil break que saldrá del ciclo completamente. Ambas sentencias funcionan con todas las variaciones de bucle, es decir. for, foreach y while.

$numbers = array(1, 2, 3, 4, 5, 6, 7, 8, 9); 
foreach($numbers as $number) { 
    if ($number == 4) { continue; } 
    // ... snip 
} 
+0

ah continuar, gracias de, había intentado todas mis opciones antes mencionadas. Aceptará lo antes posible – Hailwood

+0

¿No se considera 'continuar' como una mala práctica de codificación? Por las mismas razones que 'goto' ... –

+0

No realmente. Los saltos no están mal. 'goto' como se implementó en los idiomas que en realidad lo tenían le permitía saltar a literalmente a cualquier parte de la aplicación, eso era lo malo. Llamadas a funciones, declaraciones condicionales, cualquier cosa que introduzca ramificaciones, todas usan saltos y eso está bien. 'continue' tiene un único caso de uso bien definido. Está bien. Si algo 'break' es peor. –

7
continue; 

Continuar dirán a saltar el bloque de iteración actual, pero continuar con el resto del bucle. Funciona en todos los escenarios (para, mientras, etc.)

+0

* "omita el bloque de iteración actual, pero continúe con el resto del ciclo" * Gracias, una forma muy clara de expresarlo. – Alvaro

0

rotura; detendrá el ciclo y hará que el compilador salga al lado del ciclo. mientras continúe; saltará el actual e irá al próximo ciclo. como:

$i = 0; 
while ($i++) 
{ 
    if ($i == 3) 
    { 
     continue; 
    } 
    if ($i == 5) 
    { 
     break; 
    } 
    echo $i . "\n"; 
} 

Salida:

1 
2 
4 
6 
Cuestiones relacionadas