W3docs

Loops em PHP com a Instrução Break

Em PHP, as instruções break e continue oferecem controle preciso sobre loops, permitindo sair antecipadamente ou pular iterações com facilidade.

Ao escrever um loop em PHP, muitas vezes você precisa de um controle mais refinado do que "executar cada iteração". Duas instruções fornecem esse controle: break sai do loop antecipadamente, e continue pula o restante da iteração atual. Esta página aborda ambas, incluindo como aplicá-las a loops aninhados com break N e continue N.

Entendendo a Instrução Break

A instrução break encerra o loop atual (ou switch) imediatamente e transfere o controle para a primeira instrução após o loop. Use-a quando você encontrou o que estava procurando, ou quando continuar seria inútil ou inseguro — por exemplo, ao encontrar um registro correspondente ou ao atingir uma condição de erro.

break funciona dentro de loops for, foreach, while e do...while, bem como dentro de uma instrução switch.

Nota: Usar break fora de um loop ou instrução switch provoca um erro fatal em PHP.

Usando a Instrução Break em um Loop For

Em um loop for, a instrução break pode ser usada para interromper o loop quando uma condição específica for atendida. Por exemplo, o código a seguir usa um loop for para pesquisar um número em um array:

Exemplo PHP de break em loop for

php— editable, runs on the server

Neste código, o loop será interrompido assim que o valor de $numbers[$i] for igual a 3. A saída deste código será "Found 3 at index 2".

Usando a Instrução Break em um Loop Foreach

Em um loop foreach, a instrução break funciona de maneira semelhante ao loop for. O código a seguir usa um loop foreach para pesquisar um valor específico em um array associativo:

Exemplo PHP de break em loop foreach

php— editable, runs on the server

Neste código, o loop será interrompido assim que a chave $color for igual a "green". A saída deste código será "green has hex code #00FF00".

Saindo de Loops Aninhados

A instrução break também pode ser usada para sair de loops aninhados. Quando uma instrução break é usada dentro de um loop aninhado, apenas o loop mais interno é encerrado.

Por exemplo, o código a seguir usa dois loops aninhados para pesquisar um valor específico em um array bidimensional:

Exemplo PHP de break em loops aninhados

php— editable, runs on the server

Neste código, a instrução break 2 é usada para sair de dois níveis de aninhamento. A saída deste código será Found 5 at [1][1].

O número após break indica quantos loops envolventes devem ser encerrados, não um índice de loop. break 1 é o mesmo que um break simples, e o número não pode ser maior que a profundidade real de aninhamento.

Entendendo a Instrução Continue

Enquanto break sai completamente do loop, continue apenas pula o restante da iteração atual e avança diretamente para a próxima. O próprio loop continua em execução. Esta é a escolha natural quando você deseja ignorar alguns itens, mas ainda processar todo o resto.

O loop a seguir imprime todos os números de 1 a 10, exceto os pares:

Exemplo PHP de continue em um loop for

<?php

for ($i = 1; $i <= 10; $i++) {
    if ($i % 2 == 0) {
        continue; // skip even numbers
    }
    echo "$i ";
}

?>

A saída é 1 3 5 7 9 — quando $i é par, continue pula o echo e o loop avança para o próximo valor.

Continue em um Loop Foreach

continue é especialmente útil em um loop foreach quando você deseja filtrar itens conforme avança. Aqui ignoramos qualquer produto que esteja fora de estoque:

Exemplo PHP de continue em um loop foreach

<?php

$products = array(
    array("name" => "Pen",      "stock" => 12),
    array("name" => "Notebook", "stock" => 0),
    array("name" => "Eraser",   "stock" => 5),
);

foreach ($products as $product) {
    if ($product["stock"] === 0) {
        continue; // don't list sold-out items
    }
    echo $product["name"] . " (" . $product["stock"] . " in stock)\n";
}

?>

Isso imprime Pen e Eraser, pulando o Notebook fora de estoque.

Pulando Múltiplos Níveis com continue N

Assim como break N, continue N pula para a próxima iteração de um loop externo. continue 2, por exemplo, reinicia o loop um nível acima:

Exemplo PHP de continue 2 em loops aninhados

<?php

for ($i = 1; $i <= 3; $i++) {
    for ($j = 1; $j <= 3; $j++) {
        if ($j == 2) {
            continue 2; // jump to the next $i
        }
        echo "i=$i j=$j\n";
    }
}

?>

O loop interno sempre imprime apenas j=1, porque ao atingir j == 2 o loop externo é reiniciado. A saída é i=1 j=1, i=2 j=1, i=3 j=1.

Break vs. Continue

InstruçãoEfeito
breakPara o loop completamente; a execução continua após o loop.
continuePula o restante da iteração atual; o loop continua.
break NSai de N loops aninhados de uma só vez.
continue NPula para a próxima iteração do loop N níveis acima.

Armadilhas Comuns

  • continue em um loop do...while ainda reavalia a condição. Ele não ignora o teste de condição, portanto o loop ainda pode terminar após um continue.
  • continue se comporta de forma diferente dentro de switch. Dentro de um switch que está dentro de um loop, continue age como break para o switch e emite um aviso no PHP moderno. Use break para sair do switch, e reserve continue para o loop envolvente.
  • Erro de deslocamento com continue em um loop for é raro porque o incremento da instrução for é executado normalmente — mas em um loop while você deve atualizar o contador antes de continue, caso contrário pode criar um loop infinito.

Conclusão

As instruções break e continue oferecem controle preciso sobre a execução de loops: break sai de um loop antecipadamente, enquanto continue pula uma iteração e continua. As formas break N e continue N estendem esse controle para loops aninhados. Em seguida, revise como os diferentes tipos de loop funcionam — for, foreach, while e do...while.

Prática

Prática
Em PHP, qual é a função principal das instruções 'break' e 'continue'?
Em PHP, qual é a função principal das instruções 'break' e 'continue'?
Was this page helpful?