Laço While em PHP

Apesar de simples, o laço while é extremamente utilizado em PHP, principalmente quando você precisa exibir conteúdo da base de dados, ou executar o loop do WordPress.

While significa "enquanto" em português, ou seja, enquanto uma expressão for avaliada como verdadeira (true), uma ação é executada repetidamente. A expressão é testada a cada início do laço, portanto, se a mesma for avaliada como falsa (false) na primeira tentativa, a ação esperada não ocorre.

A estrutura do laço while é a seguinte:

while ( expressão ) {
	ação
}

Vamos ver como isso funciona na prática.

While em PHP

Qualquer expressão que seja avaliada como verdadeira pode ser utilizada com um laço while em PHP, porém, em algum momento essa expressão deverá retornar um valor falso, caso contrário, o loop nunca vai parar, então criamos aquilo que chamamos de laço infinito (ou loop infinito).

Normalmente, quando utilizamos dados que vêm da base de dados, a expressão que utilizamos é avaliada como verdadeira enquanto existirem linhas na consulta, neste caso não é necessário alterar nada dentro do laço, pois, a própria função utilizada vai retornar um valor falso quando chegar ao fim, porém, quando tentamos testar valores de variáveis, devemos alterar este valor dentro do laço para que nossa expressão seja avaliada como falsa em algum momento.

Suponhamos que eu queira contar até 10 utilizando um laço while, neste caso posso fazer da seguinte maneira:

<?php
// Número inicial
$num = 0;

// Laço com expressão "número menor ou igual a 10"
while ( $num <= 10 ) {
	// Mostra $num na tela
	echo $num;
	
	// Soma mais um em $num;
	$num++;
}
?>

Perceba acima que criei uma variável $num com um valor inicial (0), logo em seguida chamei o laço while com a expressão "$num <= 10" (número menor ou igual a 10). Dentro da ação, exibi o valor do número e, na última linha, somei seu valor com em mais um (+1) com o operador de incremento ++.

Como a condição (expressão) será verificada a cada volta do laço, toda vez que um laço for completo, a variável inicial $num terá um novo valor (0 + 1, 1 + 1, 2 + 1, 3 + 1 …). Quando seu valor atingir o número 11, minha condição será avaliada como falsa, pois, 11 é maior que 10, consequentemente a última ação (exibir o número 11) não será executada. Assim, o código continua para as próximas linhas (se existirem outras linhas).

Outra sintaxe

Assim como if/else/elseif, while também pode ser executado com outra sintaxe, veja:

<?php
// Número inicial
$num = 0;

// Laço com expressão "número menor ou igual a 10"
while ( $num <= 10 ):
	// Mostra $num na tela
	echo $num;
	
	// Soma mais um em $num;
	$num++;
endwhile;
?>

Perceba que você pode trocar as chaves { e } por dois pontos (:) e a palavra endwhile;. Não há nenhuma diferença além do modo de escrita.

Aulas anteriores

Veja todas as aulas, e mais, na categoria Curso de PHP do Tutsup.