Bora ajudar o programador a transformar café em código?

Laço WHILE em PHP

Neste tutorial de nossa apostila de PHP, vamos aprender o que é, para que serve e como usar o laço WHILE em PHP.

Laço WHILE - O que é, para que serve?

Quando estudamos testes condicionais, vimos que os testes realizados eram executados apenas uma vez, e apenas uma coisa acontecia (ou IF ou ELSE).

Porém, muitas vezes é necessário fazer esses testes várias e várias vezes.
Por exemplo, um botão de uma página fica o tempo inteiro perguntando:
'Fui clicado? Não, ok vou ficar quieto.'
'Fui clicado? Ainda não, ok'
'Fui clicado? Opa, agora sim, então devo chamar uma função do JavaScript'.

Temos que ficar várias e várias vezes fazendo vários testes.
E é aí que entra o laço WHILE.

Ele nada mais é que um teste condicional que se repete várias e várias vezes.

Laço WHILE - Como usar

Vamos agora aprender a sintaxe do laço WHILE, em PHP.
Ele é da seguinte maneira:

<?php 
 while( teste_condicional){
  codigo
  codigo
 }
?>

Quando o PHP chega no laço WHILE, ele vê o que tem dentro dele, entre parêntesis, e testa. Será alguma expressão ou algum valor.

Enquanto aquele teste resultar em TRUE, ele vai executar o código entre chaves.
Testa uma vez, se TRUE, executa. Testa de novo, se TRUE, executa de novo e assim vai.

O laço WHILE só vai parar quando o teste resultar FALSE, ok?

Exemplo de Laço WHILE - Looping infinito

O exemplo mais simples e clássico de laço WHILE, é o Looping infinito.

É aquele que a condição que será testada vai ser sempre TRUE.
No exemplo abaixo, ela escreve "Curso PHP Progressivo" na tela...várias e várias vezes...infinitas, até travar seu navegado:

<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <?php 
  while(TRUE)
   echo "PHP Progressivo <br />";
 ?>
 </body>
</html>

Obtenha uma hospedagem, suba seu arquivo PHP com esse código e trolle um amigo mandando ele entrar no seu site.

Note que, assim como IF e ELSE, se seu código tiver apenas uma linha de comando, não é obrigatório o uso de chaves.

Exemplo de WHILE: Contando até 10

O código abaixo pega uma variável, inicializa no 1, testa se é menor igual a 10.
Se for, imprime o número. Depois, incrementa e roda tudo de novo.
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <?php 
  $count=1;
  while($count<=10){
   echo "$count <br />";
   $count++;
  }
 ?>
 </body>
</html>
Esse simples script imprime no HTML os números de 1 até 10.
Teste com 100.
Teste com 1000.
Teste com 1 milhão, veja como o PHP é rápido e foda!

Tire o $count++, o que acontece?
Por que?

Exemplo de WHILE: Contanto de 10 até 1

Vamos fazer o contrário agora.

Vamos começar de 10. Enquanto a variável for maior que 0, imprimir seu valor.
Dentro do código, também temos que decrementar a variável, senão ela nunca atinge o FALSE no teste condicional:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <?php 
  $count=10;
  while($count>0){
   echo "$count <br />";
   $count--;
  }
 ?>
 </body>
</html>

Exemplo de WHILE: Exibe o dobro

Crie um script que exibe os números 1, 2, 3..., 100 e ao lado, o dobro de seu valor.

Nossa variável de controle começa em 1 e vai até 100.
Enquanto for menor ou igual a 100, vai imprimir seu valor junto com o dobro.

Veja como fazer isso com laço WHILE:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <?php 
  $count=1;
  while($count<=100){
   echo "$count : ".(2*$count)."<br />";
   $count++;
  }
 ?>
 </body>
</html>

Exemplo de WHILE: Pedindo a Senha

Crie uma página que pede uma senha ao usuário e exiba "Se você não digitar a senha, seu navegador vai travar...".

Enquanto ele digitar uma senha errada ou não digitar nada, ficar escrevendo "Senha errada, sistema vai travar" na tela. Quando ele digitar a senha correta (que deve ser 'rush2112'), exibir "Entrando no sistema".

O teste condicional aqui é se o que for digitado pelo usuário é 'rush2112' ou não.
Se for, ok para. Se não, vai ficar executando e executando o WHILE pra sempre...
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Senha:  <input type="text" name="password" /><br />
  <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php 
  $senha = $_GET['password'];
  echo "Se você não digitar a senha, seu navegador vai travar...<br />";
  while($senha != 'rush2112'){
   echo "Senha errada...Sistem vai travar<br />";
  }
  echo "Entrando no sistema...";
 ?>
 </body>
</html>

Veja também

O melhor PC para programar

O melhor celular para programar