W3docs

do

A palavra-chave "do" é uma estrutura de controle em PHP usada para executar um bloco de código repetidamente até que uma condição seja satisfeita.

A Palavra-chave do em PHP

A palavra-chave do inicia um loop do...while em PHP — uma estrutura de controle que executa um bloco de código repetidamente enquanto uma condição permanecer verdadeira. Sua característica distintiva é que a condição é verificada no final do loop, portanto o corpo sempre é executado pelo menos uma vez, mesmo quando a condição é falsa desde o início.

Esta página aborda a sintaxe do do...while, como ele difere de um loop while comum, as situações práticas em que ele se destaca (validação de entrada, menus, lógica de repetição), os erros comuns a evitar, e como controlar o loop com break e continue.

Sintaxe

A palavra-chave do é usada em conjunto com a palavra-chave while. O corpo vem primeiro, depois a condição:

A sintaxe PHP do do

<?php

do {
  // code to be executed
} while (condition);

Dois detalhes importantes a lembrar:

  • A condição é avaliada após cada passagem, portanto o corpo é executado uma vez antes de ser verificado.
  • O while (condition); de fechamento deve terminar com ponto e vírgula — ao contrário de um loop while comum, onde o ponto e vírgula criaria um bug.

do...while vs while

A diferença está em quando a condição é testada. Um loop while comum verifica a condição antes da primeira iteração, portanto pode ser executado zero vezes. Um loop do...while verifica depois, portanto é executado pelo menos uma vez.

<?php

$count = 10;

// while: condition false up front → body never runs
while ($count < 5) {
  echo "while: $count\n";
}

// do...while: body runs once before the check
do {
  echo "do: $count\n"; // prints "do: 10"
} while ($count < 5);

Saída:

do: 10

O loop while não imprime nada; o loop do...while imprime uma linha. Use do...while sempre que o corpo precisar ser executado pelo menos uma vez, independentemente do estado inicial.

Exemplos

Contar e iterar sobre um array — observe que PHP_EOL (ou "\n") imprime uma nova linha, para que cada valor apareça em sua própria linha:

Exemplos de do em PHP

<?php

// Example 1 — count from 1 to 5
$myNumber = 1;
do {
  echo $myNumber . PHP_EOL;
  $myNumber++;
} while ($myNumber <= 5);
// Prints 1, 2, 3, 4, 5 each on its own line

// Example 2 — walk through an array
$myArray = ["apple", "banana", "cherry", "date"];
$index = 0;
do {
  echo $myArray[$index] . PHP_EOL;
  $index++;
} while ($index < count($myArray));
// Prints apple, banana, cherry, date each on its own line

Quando usar do...while

A garantia de "executar pelo menos uma vez" torna o do...while a escolha natural para alguns padrões recorrentes.

Lógica de repetição e validação

Tente uma ação uma vez e continue repetindo enquanto ela falhar:

<?php

$attempts = 0;
do {
  $attempts++;
  // Simulate: the 3rd attempt finally succeeds
  $password = $attempts < 3 ? "wrong" : "secret";
} while ($password !== "secret" && $attempts < 5);

echo "Logged in after $attempts attempts" . PHP_EOL;
// Logged in after 3 attempts

Como a primeira tentativa deve sempre acontecer, o do...while é mais natural aqui do que um loop while com código de configuração duplicado.

Loops de menu

Exibir um menu, ler a entrada e repetir até o usuário escolher sair — o menu deve aparecer pelo menos uma vez:

<?php

$choice = '';
do {
  // show menu, read $choice from input...
  // for this example we just stop immediately
  $choice = 'q';
} while ($choice !== 'q');

echo "Goodbye\n";

Controlando o loop: break e continue

Dentro do corpo de um do...while, você pode usar break para sair do loop antecipadamente e continue para pular para a próxima verificação de condição.

<?php

$n = 0;
do {
  $n++;
  if ($n === 3) {
    continue; // skip printing 3, jump to the while check
  }
  if ($n > 5) {
    break;    // exit the loop entirely
  }
  echo $n . PHP_EOL;
} while (true);
// Prints 1, 2, 4, 5

Observe que continue salta para o teste de condição, não de volta ao início do corpo — o loop ainda reavalia while (true) e continua.

Armadilhas comuns

  • Esquecer o ponto e vírgula final após while (condition) causa um erro de análise.
  • Loops infinitos: se a condição nunca se tornar falsa (e não houver break), o loop é executado para sempre. Certifique-se de que algo dentro do corpo altere os valores dos quais a condição depende.
  • Erro de índice ao acessar arrays: com do...while, o corpo é executado antes da verificação de limites, portanto um array vazio pode gerar um erro de "undefined offset". Proteja-se com if (!empty($arr)) ou use foreach para arrays.

Loops relacionados

PHP oferece várias estruturas de repetição — escolha aquela que corresponde à sua intenção:

  • while — verifica a condição antes de cada passagem (pode ser executado zero vezes).
  • for — um loop baseado em contador com inicialização/condição/incremento integrados.
  • foreach — itera diretamente sobre arrays e objects.
  • Visão geral dos loops PHP — uma comparação lado a lado dos quatro tipos.

Conclusão

O loop do...while é a ferramenta certa sempre que um bloco de código precisar ser executado pelo menos uma vez e então se repetir enquanto uma condição for verdadeira — validação de entrada, lógica de repetição e prompts de menu são exemplos clássicos. Lembre-se do ponto e vírgula final, certifique-se de que a condição possa eventualmente se tornar falsa, e use break/continue para ajustar o fluxo.

Prática

Prática
Em PHP, qual é o propósito do loop 'do-while'?
Em PHP, qual é o propósito do loop 'do-while'?
Was this page helpful?