Técnicas de Iteração em PHP: Um Guia Completo
Aprenda loops em PHP: for, while, do-while e foreach com exemplos executáveis, além de break, continue, loops aninhados e dicas para escolher o loop certo.
Os loops permitem executar o mesmo bloco de código repetidamente sem precisar copiá-lo e colá-lo. Em vez de escrever dez declarações echo, você escreve uma e diz ao PHP para repeti-la dez vezes. Quase todo programa real itera sobre algo: linhas de um banco de dados, itens de um carrinho de compras, linhas de um arquivo ou números em um intervalo.
O PHP oferece quatro estruturas de loop:
for— quando você sabe quantas vezes repetir ou precisa de um contador.while— repete enquanto uma condição for verdadeira (você pode não saber quantas vezes com antecedência).do...while— igual aowhile, mas o corpo sempre é executado pelo menos uma vez.foreach— o loop ideal para percorrer cada elemento de um array.
Esta página aborda a sintaxe de cada um, como controlar loops com break e continue, loops aninhados e como escolher o mais adequado.
Loops for
Um loop for repete um bloco um número conhecido de vezes. Seu cabeçalho tem três partes separadas por ponto e vírgula:
for (initializer; condition; update) {
// body
}- O inicializador é executado uma vez, antes de o loop começar — geralmente para configurar um contador.
- A condição é verificada antes de cada iteração. O loop continua enquanto ela for
truee para no momento em que se tornafalse. - A atualização é executada após cada iteração — geralmente para incrementar o contador.
Aqui $i começa em 0, o corpo é executado enquanto $i < 10, e $i++ adiciona 1 após cada passagem. O loop imprime The number is 0 até The number is 9 — dez linhas. Observe que ele para em 9, não em 10, porque a condição $i < 10 já é falsa quando $i chega a 10. Os operadores relacionais usados aqui (<, ++) são abordados em operadores PHP.
Loops while
Um loop while repete enquanto sua condição for verdadeira. Use-o quando o número de iterações não for fixo com antecedência — por exemplo, lendo até o final de um arquivo.
Isso imprime as mesmas dez linhas que o exemplo com for acima. A diferença é puramente estilística: com while você gerencia o contador por conta própria ($i = 0 antes do loop, $i++ dentro dele). Esquecer o $i++ faria a condição permanecer verdadeira para sempre — um loop infinito, o bug de loop mais comum.
Loops do-while
Um loop do...while é como o while, mas verifica a condição após executar o corpo. Isso significa que o corpo sempre é executado pelo menos uma vez, mesmo que a condição seja falsa desde o início.
Isso também imprime de 0 a 9. O comportamento de "pelo menos uma vez" é importante quando a condição depende de algo que o corpo do loop produz — por exemplo, solicitar uma entrada ao usuário e repetir apenas se a entrada for inválida. Observe o ponto e vírgula após while (...); ele é obrigatório aqui.
Loops foreach
Um loop foreach percorre cada elemento de um array, um de cada vez. É a forma mais limpa de iterar sobre uma coleção porque você nunca gerencia um índice manualmente.
A forma mais simples fornece cada valor:
Em cada passagem, $value contém o próximo elemento, portanto isso imprime Red, Green e depois Blue.
Para arrays associativos, use a forma $key => $value para ler tanto a chave quanto o valor:
Isso imprime Peter is 32, Quagmire is 30 e Joe is 34. O foreach preserva a ordem de inserção, portanto os elementos saem na ordem em que foram definidos.
Controle de loop: break e continue
Às vezes você precisa parar um loop antecipadamente ou pular uma única passagem. É para isso que servem break e continue, e eles funcionam em todos os tipos de loop.
Instrução break do PHP
A instrução break para o loop imediatamente e salta para o código após ele.
Quando $i chega a 5, o break encerra o loop, portanto isso imprime apenas Number: 0 a Number: 4.
Instrução continue do PHP
A instrução continue pula o restante da iteração atual e vai direto para a próxima — o loop em si continua.
Aqui o continue pula a iteração em que $i == 5, portanto todos os números exceto 5 são impressos: Number: 0 a Number: 4 e depois Number: 6 a Number: 9.
Loops aninhados
Você pode colocar um loop dentro de outro. O loop interno é executado completamente em cada passagem do loop externo. É assim que você cria grades, tabelas e tabelas de multiplicação.
<?php
for ($row = 1; $row <= 3; $row++) {
for ($col = 1; $col <= 3; $col++) {
echo $row * $col . "\t";
}
echo "\n";
}
?>O loop externo é executado três vezes (uma por linha); para cada linha, o loop interno é executado três vezes (uma por coluna), imprimindo uma grade de multiplicação 3×3. Observe que dentro de um loop aninhado, break e continue afetam apenas o loop em que estão. Para sair de mais de um nível de uma vez, você pode passar um número: break 2; sai de dois loops.
Qual loop devo usar?
| Situação | Melhor escolha |
|---|---|
| Você conhece a contagem de iterações ou precisa de um contador | for |
| Repetir enquanto uma condição for verdadeira, contagem desconhecida | while |
Como while, mas o corpo deve ser executado pelo menos uma vez | do...while |
| Processar cada elemento de um array | foreach |
Na dúvida com arrays, opte pelo foreach — é o mais legível e o mais difícil de errar, pois não há índice para gerenciar e nenhum risco de sair dos limites.
Conclusão
Os quatro loops do PHP cobrem todos os padrões de repetição que você encontrará: for para loops contados, while e do...while para loops orientados a condição, e foreach para arrays. Combine-os com break e continue para controlar o fluxo e aninhe-os para trabalhar com grades e tabelas. Quando os loops se tornarem naturais, combine-os com instruções condicionais, a instrução switch e funções para estruturar programas completos.