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 breakQuando 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 2O 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:
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 contentSaindo 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
// DoneUm 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
breakdeve 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 usereturn.
break vs. continue
Esses dois são fáceis de confundir:
breakencerra o loop completamente e passa para o código após ele.continuepula 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
breakem umswitchcausa fall-through acidental, fazendo com que múltiplos casos sejam executados. Isso é ocasionalmente intencional (agrupando casos), mas geralmente é um bug. breakafeta apenas loops eswitch— não é possível usá-lo para sair de um blocoifou de uma função. Usereturnpara 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
- continue — pula para a próxima iteração em vez de parar
- loop for e loop while
- loop foreach — iterar sobre arrays
- switch — onde
breaksepara os casos