Diferença entre pausa e continuar em PHP?

169

Qual é a diferença entre breake continueno PHP?

Powtac
fonte

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
}
deceze
fonte
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
Hinek
fonte
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

SW4
fonte
14

Para o registro:

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

Igor Parra
fonte
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;

Joko Wandiro
fonte
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.

DGH
fonte
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..

Mahendra Liya
fonte
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.

alex
fonte
2

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

cspolton
fonte
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.
Muhammed Shihabudeen Labba A
fonte