Diferença entre pausa e continuar em PHP?


Respostas:


517

breakfinaliza um loop completamente, continueapenas atalhos a iteração atual e passa para a próxima iteração.

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

Isso seria usado assim:

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

    $foundDroidYoureLookingFor = true;
    break; // ..off the search
}

56
O uso
incorreto

7
Amo esta resposta! Lembre de me da recomendação do WP.org sobre Condições de Yoda: make.wordpress.org/core/handbook/coding-standards/php/...
Bob Gregor

4
são 7 anos após essa resposta, mas vale a pena dizer isso. como nos documentos php da v4 breake continuesão iguais em switch. ambos saem do interruptor. para sair do loop externo, se houver algum uso continue 2.
Amin.Qarabaqi

@BobGregor Atualmente, essa parte pode ser encontrada em make.wordpress.org/core/handbook/best-practices/…
Douwe de Haan

@ deceze, este exemplo com código é ruim. Você atribui uma variável que não é usada em nenhum lugar. A edição sugerida foi mais legível.
Tajni

49

break sai do loop em que você está, continue começa com o próximo ciclo do loop imediatamente.

Exemplo:

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

irá produzir:

9
7
6

1
+1; o mesmo que em basicamente todos os outros idiomas que usam essas palavras-chave.
Karl Knechtel

+1; apenas uma explicação simples e um bom exemplo, até a massa while(--$i)é um pouco complicada para iniciantes.

@Omeid eu concordo, que é complicado ... mas eu não tinha certeza da sintaxe para loop de php e preguiça de procurá-lo
Hinek

Este é um excelente exemplo!
demuro1

1
Ótimo exemplo. (A linha echo $ i. "\ N" precisa de uma semicoluna no final.)
user3563097

16

PAUSA:

break termina a execução da corrente para, foreach, while, do-while ou switch switch.

CONTINUAR:

continue é usado nas estruturas de loop para ignorar o restante da iteração do loop atual e continuar a execução na avaliação da condição e, em seguida, no início da próxima iteração.

Portanto, dependendo da sua necessidade, você pode redefinir a posição atualmente sendo executada no seu código para um nível diferente do aninhamento atual.

Além disso, veja aqui para um detalhamento artical Break vs Continue com vários exemplos


14

Para o registro:

Observe que, no PHP, a instrução switch é considerada uma estrutura em loop para os propósitos de continuar .


Eu fui mordido por esse "recurso". Como posso continuar um loop while com base nas coisas descobertas em um caso de switch?
Matt Bianco

1
@ MattBianco, você usa continue 2nesses casos.
flaviovs

5

break usado para sair da instrução loop, mas continue apenas parando o script em uma condição específica e, em seguida, continue a instrução loop até chegar ao 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 possa ajudá-lo;


4

Break termina a estrutura atual de loop / controle e pula para o final dela, não importa quantas vezes mais o loop teria repetido.

Continue pula para o início da próxima iteração do loop.


4

'continue' é usado nas estruturas de loop para pular o restante da iteração do loop atual e continuar a execução na avaliação da condição e, em seguida, no início da próxima iteração.

'break' termina a execução da estrutura atual, foreach, while, do-while ou switch.

break aceita um argumento numérico opcional que informa quantas estruturas anexas aninhadas devem ser quebradas.

Confira os seguintes links:

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

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

Espero que ajude..


3

break interromperá o loop atual (ou passará um número inteiro para dizer quantos loops serão interrompidos).

continue irá parar a iteração atual e iniciar a próxima.


2

breaksairá do loop, enquanto continueiniciará o próximo ciclo do loop imediatamente.


2

Não estou escrevendo nada igual aqui. Apenas uma nota do changelog do manual do PHP.


Changelog 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 alterações para pausa

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.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.