W3docs

break

Aprenda como usar a palavra-chave "break" em PHP para encerrar loops e instruções switch, incluindo loops aninhados com break N.

A Palavra-chave break em PHP

break é uma instrução de controle de fluxo que encerra imediatamente o loop ou switch mais próximo. A execução salta para a primeira linha após essa estrutura — quaisquer iterações restantes são ignoradas. Funciona dentro de for, foreach, while, do...while e switch.

Use break sempre que encontrar o que estava procurando, ou ao atingir uma condição que torna inútil continuar: um registro correspondente em uma lista, um erro irrecuperável ou um caso de switch já tratado. Parar cedo economiza processamento e mantém a lógica clara.

Esta página aborda a sintaxe, cada tipo de loop, o caso do switch, a saída de loops aninhados com break N, e como break difere de continue.

Sintaxe

<?php

while (condition) {
  // code that runs each iteration
  if (break_condition) {
    break; // exit the loop right now
  }
}
// execution continues here after break

Quando break_condition é verdadeiro, o loop termina e a linha após a chave de fechamento é executada em seguida. A condição é opcional — um break; simples sempre sai — mas na prática você quase sempre o envolve com um if, caso contrário o loop só executaria uma vez.

Saindo de um loop

O uso mais comum é interromper uma busca assim que você tem uma resposta. Quando o valor é encontrado, não há razão para continuar percorrendo o restante do array.

<?php

$haystack = [10, 22, 35, 47, 58];
$target = 35;
$found = false;

foreach ($haystack as $index => $value) {
  if ($value === $target) {
    $found = true;
    echo "Found $target at index $index\n";
    break; // stop — no need to check the rest
  }
}

if (!$found) {
  echo "Not found\n";
}

// Output: Found 35 at index 2

O mesmo padrão funciona com os outros tipos de loop. Aqui, break encerra um loop while (true) — um loop intencionalmente infinito cuja única saída é o break:

php— editable, runs on the server

Usando break em um switch

Dentro de uma instrução switch, o break é o que impede a execução de "cair" para o próximo caso. Sem ele, o PHP continua executando o código nos casos abaixo do que foi correspondido.

<?php

$role = "editor";

switch ($role) {
  case "admin":
    echo "Full access";
    break;
  case "editor":
    echo "Can edit content";
    break; // without this, "Read-only" would also run
  default:
    echo "Read-only";
}

// Output: Can edit content

Saindo de loops aninhados com break N

Por padrão, break encerra apenas o loop mais interno. Para sair de vários níveis de uma vez, passe um número: break 2; sai de duas estruturas envolventes, break 3; sai de três, e assim por diante.

<?php

for ($i = 1; $i <= 3; $i++) {
  foreach (['a', 'b', 'c'] as $letter) {
    if ($letter === 'b') {
      break 2; // exit BOTH the foreach and the for
    }
    echo "$i-$letter\n";
  }
}

echo "Done\n";

// Output:
// 1-a
// Done

Um break; simples aqui encerraria apenas o foreach interno, e o for externo iniciaria sua próxima iteração. O break 2; encerra ambos, então a execução salta diretamente para echo "Done";.

Nota: O número após break deve ser um literal — break $level; é um erro fatal desde o PHP 5.4. Se precisar dessa flexibilidade, reestruture os loops ou mova-os para uma função e use return.

break vs. continue

Esses dois são fáceis de confundir:

  • break encerra o loop completamente e passa para o código após ele.
  • continue pula apenas o restante da iteração atual e vai para a próxima — o loop continua.

Veja break e continue para uma comparação lado a lado.

Armadilhas comuns

  • Esquecer break em um switch causa fall-through acidental, fazendo com que múltiplos casos sejam executados. Isso é ocasionalmente intencional (agrupando casos), mas geralmente é um bug.
  • break afeta apenas loops e switch — não é possível usá-lo para sair de um bloco if ou de uma função. Use return para sair de uma função.
  • Contar os níveis para break N é frágil; se você envolver o código em outro loop depois, o número estará errado. Mantenha o aninhamento raso.

Tópicos relacionados

Prática

Prática
O que a instrução 'break' faz em PHP?
O que a instrução 'break' faz em PHP?
Was this page helpful?