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 loopwhilecomum, 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: 10O 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 lineQuando 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 attemptsComo 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, 5Observe 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 comif (!empty($arr))ou useforeachpara 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.