while
Em PHP, a palavra-chave "while" cria um loop que executa um bloco de código repetidamente enquanto uma condição for verdadeira.
O Loop while em PHP
O loop while é o loop mais simples em PHP. Ele executa um bloco de código repetidamente enquanto uma condição permanecer verdadeira, e para no momento em que essa condição se torna falsa. Use-o quando você não sabe antecipadamente quantas iterações serão necessárias — por exemplo, lendo linhas de um banco de dados até que não restem mais, ou repetindo uma operação até que ela seja bem-sucedida.
Esta página aborda a sintaxe do while, a forma alternativa com endwhile, como o while difere do do...while, e o erro mais comum — o loop infinito — e como evitá-lo.
Sintaxe
while (condition) {
// Code to be executed while the condition is true
}A condição é avaliada antes de cada iteração:
- O PHP verifica a
condition. - Se for
true, o corpo é executado uma vez e, em seguida, o PHP retorna ao passo 1. - Se for
false, o loop termina e a execução continua após a chave de fechamento.
Como a verificação ocorre primeiro, o corpo pode ser executado zero vezes — se a condição já for falsa na primeira verificação, o corpo do loop é completamente ignorado.
Sintaxe alternativa com endwhile
O PHP também oferece uma forma com dois-pontos e endwhile, que é útil quando você mistura loops com HTML em um template:
<?php $i = 1; ?>
<ul>
<?php while ($i <= 3): ?>
<li>Item <?= $i ?></li>
<?php $i++; ?>
<?php endwhile; ?>
</ul>Ambas as formas se comportam de maneira idêntica; escolha aquela que ficou mais legível no contexto.
Uso
A palavra-chave "while" é comumente usada na programação PHP para criar loops que repetem um bloco de código até que uma determinada condição seja satisfeita. Por exemplo, você pode usar um loop "while" para iterar sobre os elementos de um array:
Exemplo da palavra-chave while em PHP
Neste exemplo, o loop "while" é usado para iterar sobre os elementos do array $myArray. A variável $i é usada para rastrear o índice atual no array, e o loop continua sendo executado enquanto $i for menor que o número de elementos no array. Dentro do loop, usamos a instrução echo para exibir o elemento atual do array e, em seguida, incrementamos $i para avançar para o próximo elemento.
Exemplos
Aqui estão mais alguns exemplos de como o loop while pode ser usado na programação PHP.
Exemplo 1: Gerando um número aleatório até que uma condição seja satisfeita
Neste exemplo, usamos um loop "while" para gerar números aleatórios até obtermos um número maior ou igual a 10. Dentro do loop, geramos um número aleatório usando a função rand() e o exibimos com a instrução echo. Continuamos gerando números aleatórios e exibindo-os até obtermos um número maior ou igual a 10.
Exemplo 2: Iterando sobre um conjunto de resultados de banco de dados
Iterando sobre um conjunto de resultados de banco de dados em PHP
<?php
$query = "SELECT * FROM my_table";
$result = mysqli_query($conn, $query);
while ($row = mysqli_fetch_assoc($result)) {
echo $row['column_name'] . "<br>";
}Neste exemplo, usamos um loop while para iterar sobre o conjunto de resultados retornado por uma consulta ao banco de dados. A função mysqli_fetch_assoc() retorna a próxima linha como um array associativo, ou false quando não há mais linhas — portanto, o loop para automaticamente assim que o conjunto de resultados se esgota. Isso funciona porque a atribuição $row = mysqli_fetch_assoc($result) é avaliada com o valor atribuído, e false encerra o loop.
Evite o loop infinito
O erro mais comum com while é esquecer de modificar a variável da qual a condição depende. Se a condição nunca se tornar falsa, o loop executa para sempre e trava seu script:
<?php
$i = 0;
// Bug: $i is never incremented, so $i < 5 stays true forever.
while ($i < 5) {
echo "running...\n";
// $i++; <-- this line is missing
}Sempre garanta que algo dentro do loop mova a condição em direção a false. Você também pode sair cedo com break, ou pular o restante da iteração atual com continue.
while vs do...while
Um loop while verifica a condição antes de executar o corpo, portanto o corpo pode ser executado zero vezes. Um loop do...while verifica a condição após o corpo, portanto o corpo sempre é executado ao menos uma vez:
<?php
$i = 10;
// Condition is false from the start, so this prints nothing.
while ($i < 5) {
echo "while: $i\n";
$i++;
}
// do...while runs the body once before checking, so it prints "do-while: 10".
do {
echo "do-while: $i\n";
$i++;
} while ($i < 5);Use do...while quando o corpo do loop deve ser executado ao menos uma vez (por exemplo, solicitando uma entrada ao usuário até que ele forneça um valor válido).
Conclusão
O loop while executa um bloco de código enquanto sua condição for verdadeira, verificando essa condição antes de cada passagem. Use-o quando o número de iterações não é conhecido antecipadamente, proteja-se contra loops infinitos atualizando a condição dentro do corpo, e escolha do...while quando o corpo precisar ser executado ao menos uma vez.
Para explorar outras formas de repetir código em PHP, veja o loop for (melhor quando você conhece a contagem de iterações) e o loop foreach (melhor para percorrer arrays). Para uma comparação geral de todos eles, leia a visão geral de loops em PHP.