¿Diferencia entre romper y continuar en PHP?

Respuestas:

517

breakfinaliza un bucle por completo, continuesolo ataja la iteración actual y pasa a la siguiente iteración.

while ($foo) {   <--------------------┐
    continue;    --- goes back here --┘
    break;       ----- jumps here ----┐
}                                     |
                 <--------------------┘

Esto se usaría así:

while ($droid = searchDroids()) {
    if ($droid != $theDroidYoureLookingFor) {
        continue; // ..the search with the next droid
    }

    $foundDroidYoureLookingFor = true;
    break; // ..off the search
}
difunto
fuente
56
El mal uso de estas funciones resulta en esto: flickr.com/photos/24973901@N04/2762458387
neokio
77
Me encanta esta respuesta! Recordarme la recomendación de WP.org sobre las condiciones de Yoda: make.wordpress.org/core/handbook/coding-standards/php/…
Bob Gregor
44
Son 7 años después de esta respuesta, pero vale la pena decirlo. como en documentos php de v4 breaky continueson iguales en switch. ambos salen del interruptor. para salir del bucle externo si hay para usar más o menos continue 2.
Amin.Qarabaqi
@BobGregor Actualmente esa parte se puede encontrar en make.wordpress.org/core/handbook/best-practices/…
Douwe de Haan
@deceze, este ejemplo con código es malo. Usted asigna una variable que no se usa en ningún lado. La edición sugerida fue más legible.
Tajni
49

break sale del bucle en el que se encuentra, continuar comienza inmediatamente con el siguiente ciclo del bucle.

Ejemplo:

$i = 10;
while (--$i)
{
    if ($i == 8)
    {
        continue;
    }
    if ($i == 5)
    {
        break;
    }
    echo $i . "\n";
}

dará salida:

9
7
6
Hinek
fuente
1
+1; lo mismo que en prácticamente cualquier otro idioma que use estas palabras clave.
Karl Knechtel
+1; solo una explicación simple y un buen ejemplo, incluso la masa while(--$i)es un poco difícil para los novatos.
@Omeid Estoy de acuerdo, que es complicado ... pero no estaba seguro de la sintaxis for-loop de php y de ser flojo para buscarlo
Hinek
¡Este es un gran ejemplo!
demuro1
1
Gran ejemplo. (La línea echo $ i. "\ N" necesita una semicolumna al final)
User3563097
16

DESCANSO:

break finaliza la ejecución de la estructura actual, foreach, while, do-while o switch.

SEGUIR:

continue se utiliza dentro de las estructuras de bucle para omitir el resto de la iteración del bucle actual y continuar la ejecución en la evaluación de la condición y luego el comienzo de la siguiente iteración.

Entonces, dependiendo de su necesidad, puede restablecer la posición que se está ejecutando actualmente en su código a un nivel diferente del anidamiento actual.

Además, vea aquí un detalle artístico Break vs Continue con una serie de ejemplos

SW4
fuente
14

Para el registro:

Tenga en cuenta que en PHP la declaración de cambio se considera una estructura de bucle para continuar .

Igor Parra
fuente
Me acaba de morder esta "característica". ¿Cómo puedo continuar un ciclo while basado en cosas descubiertas en una caja de interruptor?
MattBianco
1
@MattBianco, usas continue 2en esos casos.
flaviovs
5

el salto solía salir de la declaración de bucle, pero continúa simplemente para detener el script en una condición específica y luego continúa la declaración de bucle hasta llegar al final.

for($i=0; $i<10; $i++){
    if($i == 5){
        echo "It reach five<br>";
        continue;
    }
    echo $i . "<br>";
}

echo "<hr>";

for($i=0; $i<10; $i++){
    if($i == 5){
         echo "It reach end<br>";
         break;
    }
    echo $i . "<br>";
}

Espero que te pueda ayudar;

Joko Wandiro
fuente
4

La interrupción finaliza la estructura actual de bucle / control y salta al final de la misma, sin importar cuántas veces más se hubiera repetido el bucle.

Continuar salta al comienzo de la próxima iteración del bucle.

DGH
fuente
4

'continuar' se usa dentro de las estructuras de bucle para omitir el resto de la iteración del bucle actual y continuar la ejecución en la evaluación de la condición y luego el comienzo de la siguiente iteración.

'break' finaliza la ejecución de la estructura actual para, foreach, while, do-while o switch.

break acepta un argumento numérico opcional que le indica cuántas estructuras de cierre anidadas deben separarse.

Mira los siguientes enlaces:

http://www.php.net/manual/en/control-structures.break.php

http://www.php.net/manual/en/control-structures.continue.php

Espero eso ayude..

Mahendra Liya
fuente
3

break detendrá el bucle actual (o pasará un número entero para indicarle cuántos bucles se romperán).

continue detendrá la iteración actual y comenzará la siguiente.

alex
fuente
2

breaksaldrá del bucle, mientras continueque comenzará el próximo ciclo del bucle de inmediato.

cspolton
fuente
2

No estoy escribiendo nada igual aquí. Solo una nota de registro de cambios del manual de PHP.


Registro de cambios para continuar

Version Description

7.0.0 - continue outside of a loop or switch control structure is now detected at compile-time instead of run-time as before, and triggers an E_COMPILE_ERROR.

5.4.0   continue 0; is no longer valid. In previous versions it was interpreted the same as continue 1;.

5.4.0   Removed the ability to pass in variables (e.g., $num = 2; continue $num;) as the numerical argument.

Registro de cambios para descanso

Version Description

7.0.0   break outside of a loop or switch control structure is now detected at compile-time instead of run-time as before, and triggers an E_COMPILE_ERROR.

5.4.0   break 0; is no longer valid. In previous versions it was interpreted the same as break 1;.

5.4.0   Removed the ability to pass in variables (e.g., $num = 2; break $num;) as the numerical argument.
Muhammed Shihabudeen Labba A
fuente