💡 O que você vai aprender hoje:
- A diferença crucial entre os laços WHILE e DO WHILE.
- O conceito de looping pré-condicionado vs. pós-condicionado.
- Como garantir que um bloco de código rode pelo menos uma vez.
- Aplicações práticas com contadores e formulários HTML no PHP.
No nosso Curso de PHP, já dissecamos o looping WHILE tradicional. Nele, deixamos uma regra clara: o código dentro do laço só é executado se o teste condicional for verdadeiro desde o início.
Mas e se você precisar que o código rode pelo menos uma vez antes de fazer qualquer pergunta? É exatamente para preencher essa lacuna lógica que existe o laço do...while.
Laço DO WHILE no PHP: O que é e para que serve?
O laço DO WHILE em PHP é uma estrutura de repetição pós-condicionada. Isso significa que ele executa o bloco de código internamente pelo menos uma vez antes de testar se a condição é verdadeira. Se a condição for falsa na primeira verificação, o laço para, mas o código já terá rodado aquela primeira vez.
[Image of do while loop flowchart]Pense na diferença com a analogia do segurança de balada:
- WHILE: O segurança pede sua identidade na porta. Se você não tiver idade (condição falsa), você nem entra. (Pré-condicionado).
- DO WHILE: Você já está dentro da festa (o código roda). O segurança passa no meio do salão e pede a identidade. Se você não tiver, ele te expulsa, mas você já curtiu pelo menos alguns minutos. (Pós-condicionado).
Como usar o DO WHILE (Sintaxe)
A sintaxe é bem intuitiva se você traduzir do inglês: "Faça (do) este código, enquanto (while) esta condição for verdade".
<?php
do {
// Código a ser executado ao menos uma vez
// Lógica e incremento
} while (teste_condicional);
?>
⚠️ Atenção dev iniciante: Repare no ponto e vírgula ; no final do while(). No laço WHILE tradicional nós não usamos ponto e vírgula ali, mas no DO WHILE ele é obrigatório para encerrar a instrução. Esquecer isso é um erro clássico que vai quebrar sua página!
Exemplo Prático 1: Executando no "Falso"
O script abaixo prova que a primeira iteração do laço sempre ocorre. A condição matemática 0 em PHP é tratada como FALSE. Mesmo assim, a mensagem vai aparecer na sua tela uma vez.
<?php
do {
echo "Esta mensagem aparece, mesmo a condição sendo falsa!<br>";
} while (0); // 0 equivale a FALSE em condicionais
?>
Bateu aquela dúvida de quando usar qual laço? 🤔
Saber a sintaxe é fácil, difícil é ter a visão de arquiteto para escolher entre FOR, WHILE e DO WHILE em um projeto real. Na Apostila PHP Progressivo, nós te damos dezenas de exercícios práticos offline para treinar sua lógica de programação até essas escolhas virarem instinto.
Baixar Apostila Completa e Exercícios →Exemplo 2: Contagem Simples de 1 até 100
Claro, o uso mais comum ainda é criar repetições controladas. Veja como fica o clássico contador de 1 a 100 usando o laço pós-condicionado:
<?php
$count = 1;
do {
echo "Contagem atual: $count <br />";
$count++; // Incremento essencial para não gerar loop infinito
} while ($count <= 100);
?>
Exemplo 3: DO WHILE com entrada do Usuário (GET)
Uma aplicação fantástica para o do...while no desenvolvimento web real é a validação de menus e formulários (exibir a interface uma vez, e repetir caso o usuário digite algo errado). Abaixo, temos um script que pergunta ao usuário até onde ele quer contar.
🛠️ Curiosidade técnica: Usamos a VARIÁVEIS SUPERGLOBAIS GET $_GET para pegar o número digitado no formulário HTML e jogar dentro da nossa lógica PHP.
<html>
<head>
<title>Apostila PHP Progressivo - Contador Dinâmico</title>
</head>
<body>
<!-- Formulário HTML -->
<form action="" method="get">
Deseja contar até qual número?
<input type="number" name="count" required /><br />
<input type="submit" name="submit" value="Iniciar Contagem" />
</form>
<hr>
<?php
// O código PHP só executa a lógica principal se o formulário for enviado
if(isset($_GET['count'])) {
$final = (int) $_GET['count']; // Casting para garantir que é um número inteiro
$contador = 1;
echo "<h3>Iniciando contagem até $final:</h3>";
do {
echo "Número: $contador <br />";
$contador++;
} while ($contador <= $final);
}
?>
</body>
</html>
Neste exemplo, modernize o input HTML para type="number" e adicionei a função isset() FUNÇÃO ISSET. Isso evita que o PHP lance um aviso na tela ("Notice") caso o usuário acesse a página pela primeira vez sem ter enviado o formulário.
Pronto para deixar sua lógica ainda mais limpa? O próximo laço é o favorito dos programadores.
Próxima Aula: O Laço FOR »