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
<?php
$i = 1;
while ($i <= 5) {
    echo "Round {$i}<br>";
    $i++;
}
// Outputs rounds 1 through 5
?>

Fluxograma:

TEXT
Initialize → [Check condition] → true → Execute loop body → Update variable → Go back to check
                       ↓ false
                      Exit
⚠️ Atenção: Se a condição for sempre 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
<?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
<?php
for ($i = 1; $i <= 5; $i++) {
    echo "Round {$i}<br>";
}
// Outputs 1 through 5
?>

Três partes:

PHP
for (initialization; condition; action-after-each-iteration) {
    // loop body
}

▶ Exemplo: Tabuada com o for

PHP
<?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>";
?>
▶ Experimente

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
<?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
?>
💡 Dica: 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
<?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
?>
▶ Experimente
💡 Dica: 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
<?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>
▶ Experimente

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
💡 Dica: Em PHP, 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 += 2 em um loop for? R: $i++ aumenta em 1 a cada vez. $i += 2 aumenta em 2 (incremento de 2). Use este último para exibir apenas números ímpares ou pares.

P: Quando devo usar foreach em vez de for? R: O foreach serve apenas para matrizes e objetos — sua sintaxe é mais simples. Use o for quando 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 $val nã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

📝 Exercícios

  1. Use um loop “for” para exibir todos os números pares de 1 a 100 (dica: intervalo de 2, ou % 2 == 0).
  2. 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.
  3. 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.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%