Estruturas de loop
Os computadores se destacam em tarefas repetitivas. Os loops permitem repetir uma operação centenas ou milhares de vezes com apenas algumas linhas de código — gerar tabelas, percorrer listas de usuários, calcular totais — tudo sem esforço.
1. O loop while
Repete enquanto a condição for true. Verifique primeiro, execute depois.
<?php
$i = 1;
while ($i <= 5) {
echo "Round {$i}<br>";
$i++;
}
// Outputs rounds 1 through 5
?>
Fluxograma:
Initialize → [Check condition] → true → Execute loop body → Update variable → Go back to check
↓ false
Exit
true, você entrará em um loop infinito e seu programa travará. Antes de escrever cada while, pergunte-se: há algum código dentro do loop que, eventualmente, fará com que a condição se torne false?
2. O loop do...while
A única diferença em relação ao while é: executar primeiro uma vez e, em seguida, verificar. Isso garante que o corpo do loop seja executado pelo menos uma vez.
<?php
$i = 10;
do {
echo "Executed!<br>";
$i++;
} while ($i < 5);
// Even though the condition is false from the start, it still outputs "Executed!" once.
?>
| while | do...while | |
|---|---|---|
| Verificar o tempo | Verificar primeiro, executar depois | Executar primeiro, verificar depois |
| É executado pelo menos uma vez? | ❌ Pode não ser executado nenhuma vez | ✅ Sempre pelo menos uma vez |
| Frequência de uso | Comum | Pouco frequente |
3. O loop for
for reúne a inicialização, a condição e a atualização da iteração em um único lugar — é o loop mais utilizado:
<?php
for ($i = 1; $i <= 5; $i++) {
echo "Round {$i}<br>";
}
// Outputs 1 through 5
?>
Três partes:
for (initialization; condition; action-after-each-iteration) {
// loop body
}
▶ Exemplo: Tabuada com o for
<?php
echo "<table border='1'>";
for ($i = 1; $i <= 9; $i++) {
echo "<tr>";
for ($j = 1; $j <= $i; $j++) {
echo "<td>{$j}×{$i}=" . ($i * $j) . "</td>";
}
echo "</tr>";
}
echo "</table>";
?>
4. O loop foreach
foreach é o loop mais característico do PHP — projetado especificamente para percorrer matrizes. Sua sintaxe é tão clara que chega a ser viciante:
<?php
// Loop through an indexed array (value only)
$fruits = ["apple", "banana", "orange"];
foreach ($fruits as $fruit) {
echo "{$fruit}<br>";
}
// Loop through an associative array (key + value)
$user = [
"name" => "John",
"age" => 25,
"city" => "New York"
];
foreach ($user as $key => $value) {
echo "{$key}: {$value}<br>";
}
// name: John
// age: 25
// city: New York
?>
foreach é o loop mais usado em PHP. Memorize dois padrões: foreach ($arr as $val) para apenas o valor; foreach ($arr as $key => $val) quando precisar tanto da chave quanto do valor.
5. break e continue
| Palavra-chave | Ação |
|---|---|
break |
Encerra imediatamente todo o loop — não há mais iterações |
continue |
Pula o restante da iteração atual e passa para a próxima |
▶ Exemplo: break e continue
<?php
// break: stop at 5
for ($i = 1; $i <= 10; $i++) {
if ($i == 5) {
break; // Exit the loop
}
echo $i . " ";
}
// Output: 1 2 3 4
// continue: skip 5
for ($i = 1; $i <= 10; $i++) {
if ($i == 5) {
continue; // Skip this iteration
}
echo $i . " ";
}
// Output: 1 2 3 4 6 7 8 9 10
?>
break 2; sai de dois níveis de loops aninhados, e continue 2; pula a iteração atual do loop externo. O número após break/continue indica quantos níveis de aninhamento serão afetados.
6. Combinando loops com HTML
A sintaxe alternativa torna os loops muito mais elegantes dentro dos modelos HTML:
▶ Exemplo: Gerando uma tabela HTML com o foreach
<?php
$students = [
["name" => "Alice", "score" => 92],
["name" => "Bob", "score" => 85],
["name" => "Charlie", "score" => 78],
["name" => "Diana", "score" => 95],
];
?>
<table border="1">
<tr>
<th>Name</th>
<th>Score</th>
<th>Grade</th>
</tr>
<?php foreach ($students as $s): ?>
<tr>
<td><?= $s['name'] ?></td>
<td><?= $s['score'] ?></td>
<td>
<?php if ($s['score'] >= 90): ?>
🌟 Excellent
<?php elseif ($s['score'] >= 80): ?>
👍 Good
<?php else: ?>
📚 Keep Trying
<?php endif; ?>
</td>
</tr>
<?php endforeach; ?>
</table>
Este exemplo mostra a magia do PHP — transformar dados de um array em uma tabela HTML completa com apenas algumas linhas de código.
7. Escolhendo o loop certo
| Cenário | Ciclo recomendado |
|---|---|
| Percorrendo um array | foreach |
| Número fixo de iterações (por exemplo, de 1 a 10) | for |
| Número desconhecido de iterações, mas condição conhecida | while |
| Deve ser executado pelo menos uma vez | do...while (raramente usado) |
| Percorrimento de matriz/tabela 2D aninhada | for aninhado ou foreach aninhado |
foreach é a verdadeira força motriz (você vai percorrer matrizes constantemente). Em seguida vem for para loops contados. while é usado ocasionalmente ao ler arquivos ou conjuntos de resultados de bancos de dados. do...while quase nunca é usado.
❓ Perguntas Frequentes
P: Qual é a diferença entre
$i++e$i += 2em um loop for? R:$i++aumenta em 1 a cada vez.$i += 2aumenta em 2 (incremento de 2). Use este último para exibir apenas números ímpares ou pares.
P: Quando devo usar
foreachem vez defor? R: Oforeachserve apenas para matrizes e objetos — sua sintaxe é mais simples. Use oforquando precisar de controle preciso sobre o índice e o tamanho do passo em um loop de contagem.
P: O que acontece se eu modificar o array dentro de um foreach? R: Por padrão,
foreach ($arr as $val)opera sobre uma cópia — modificar$valnão afeta o array original. Se você adicionar&à frente de$val(referência), as modificações afetam o original. Abordaremos isso em detalhes na Lição 12 (Funções avançadas).
📖 Resumo
whileverifica primeiro, executa depois — pode não ser executado nenhuma vez se a condição for falsado...whileé executado primeiro, verifica depois — sempre é executado pelo menos uma vezforagrupa a inicialização, a condição e a atualização da iteração — ideal para loops com número fixo de iteraçõesforeaché o loop mais utilizado no PHP — percorra matrizes com$arr as $valou$arr as $key => $valbreaksai do loop;continuepula a iteração atual- A sintaxe alternativa (
for (): ... endfor;/foreach (): ... endforeach;) mantém os mix-ins HTML organizados
📝 Exercícios
- Use um loop “for” para exibir todos os números pares de 1 a 100 (dica: intervalo de 2, ou
% 2 == 0). - Crie um array associativo que armazene os nomes e números de telefone de 5 amigos e, em seguida, use o foreach para exibi-los em uma tabela HTML.
- Use loops aninhados para imprimir uma pirâmide de asteriscos: a linha 1 tem 1 asterisco, a linha 2 tem 3, ... a linha 5 tem 9 — alinhados ao centro.



