W3docs

Laços em PHP com a instrução "for"

Aprenda o loop "for" do PHP: inicialização, condição e incremento — além de contagem crescente/decrescente, passos personalizados, iteração em arrays, loops aninhados, break e continue.

Em PHP, a instrução for é uma estrutura de controle que executa um bloco de código um número conhecido de vezes. Você a utiliza sempre que o número de iterações é fixo e previsível — imprimir os números de 1 a 10, construir uma tabela HTML com N linhas ou percorrer um array indexado por posição.

Este capítulo cobre as três partes de um loop for, como cada uma é executada e padrões práticos: contagem crescente e decrescente, tamanhos de passo personalizados, iteração em arrays, aninhamento de loops e as palavras-chave break / continue.

Sintaxe

Um loop for é composto por três expressões dentro dos parênteses, separadas por ponto e vírgula, seguidas pelo corpo do loop entre chaves:

for (initialization; condition; increment) {
  // code to be executed on each pass
}

As três expressões são executadas em uma ordem específica:

  1. A inicialização é executada uma vez, antes do loop começar — geralmente configura um contador.
  2. A condição é verificada antes de cada iteração. Enquanto for true, o corpo é executado; quando se torna false, o loop para.
  3. O incremento é executado após cada iteração, logo antes de a condição ser verificada novamente — geralmente avança o contador.

Inicialização

A inicialização define o valor inicial do contador. É executada uma única vez no início. Para começar a contar em 1:

$counter = 1;

Condição

A condição decide quando parar. O loop continua sendo executado enquanto a condição for verdadeira. Para executar enquanto o contador for 10 ou menos:

$counter <= 10;

Se a condição for false na primeira verificação, o corpo nunca é executado.

Incremento

O incremento altera o contador após cada passagem para que o loop eventualmente termine. Para adicionar 1 a cada vez:

$counter++;

Se o incremento nunca tornar a condição falsa, você terá um loop infinito. Certifique-se de que o contador se aproxime da condição de parada.

Um exemplo completo de contagem

Juntando as três partes, este loop imprime o valor de $counter em cada passagem, de 1 a 10:

php— editable, runs on the server

O código acima produz a saída:

1 2 3 4 5 6 7 8 9 10 

(Sem o . " ", o echo imprimiria os dígitos sem espaços — 12345678910 — pois o echo não adiciona nada entre os valores.)

Contagem decrescente e passos personalizados

O incremento é apenas uma expressão, portanto pode decrementar ou avançar em passos diferentes de 1. Para contar de forma decrescente de 10 a 1, comece alto, pare em 1 e use $i--:

<?php

for ($i = 10; $i >= 1; $i--) {
  echo $i . " ";
}

?>

Para avançar de 2 em 2 (imprimindo números pares até 10), use $i += 2:

<?php

for ($i = 2; $i <= 10; $i += 2) {
  echo $i . " ";   // 2 4 6 8 10
}

?>

Iterando por um array

Um loop for pode percorrer um array indexado por posição. A condição usa count() para saber quantos elementos existem, e $i é usado como índice do array:

php— editable, runs on the server

O código acima produz a saída:

apple
banana
cherry

Observe que o loop começa em 0 (arrays PHP são indexados a partir de zero) e a condição é $i < count($fruits) — usando < em vez de <= porque o último índice válido é count - 1.

Para arrays — especialmente arrays associativos onde as chaves não são inteiros sequenciais — o loop foreach geralmente é mais claro e seguro do que um loop for, pois você não precisa gerenciar um índice manualmente.

Loops aninhados

Você pode colocar um loop for dentro de outro. O loop interno é executado completamente a cada passagem do loop externo. Isso é comum para grades, tabelas e saídas do tipo multiplicação:

<?php

for ($row = 1; $row <= 3; $row++) {
  for ($col = 1; $col <= 3; $col++) {
    echo $row * $col . "\t";
  }
  echo "\n";
}

?>

Isso imprime uma grade de multiplicação 3×3:

1	2	3	
2	4	6	
3	6	9	

Interrompendo e pulando iterações

Duas palavras-chave oferecem controle mais refinado dentro do corpo do loop:

  • break interrompe o loop imediatamente e continua com o código após ele.
  • continue pula o restante da iteração atual e vai para a próxima (o incremento ainda é executado).
<?php

for ($i = 1; $i <= 10; $i++) {
  if ($i == 4) {
    continue;   // skip 4
  }
  if ($i == 7) {
    break;      // stop entirely at 7
  }
  echo $i . " ";
}

?>

O código acima produz a saída:

1 2 3 5 6 

4 é pulado pelo continue, e o loop para antes de imprimir 7 por causa do break. Saiba mais no capítulo break e continue.

Quando usar for em vez de outros loops

  • Use for quando você conhece o número de iterações com antecedência ou precisa de um contador/índice.
  • Use foreach para iterar sobre os elementos de um array ou objeto sem gerenciar um índice.
  • Use while quando você faz um loop até que alguma condição mude e não há um contador natural.
  • Use do...while quando o corpo deve ser executado pelo menos uma vez antes de a condição ser verificada.

Conclusão

O loop for é uma estrutura de controle essencial em PHP para repetir código um número conhecido de vezes. Domine suas três partes — inicialização, condição e incremento — e você poderá contar de forma crescente ou decrescente, avançar em qualquer quantidade, percorrer arrays por índice e aninhar loops para construir grades. Para iterar elemento por elemento em arrays, prefira foreach; para repetição indefinida, utilize while.

Prática

Prática
Em PHP, quais são as três expressões de um loop 'for', em ordem?
Em PHP, quais são as três expressões de um loop 'for', em ordem?
Was this page helpful?