PHP - Parte 4 - Estruturas de Controle
Autor: Fabio | Publicado: 2011-03-14T04:00:00-07:00

Estruturas de controle ajudam na tomada de decisão frente a alguma pergunta que pode ter mais de uma resposta.
Ao invés de ficar escrevendo sobre o que é ou não, vamos trabalhar com exemplos, assim a gente já vai aprendendo a usar e entendendo ao mesmo tempo...

Declaração condicional "IF"&nbsp;... se isso faça X senão faça Y
Por exemplo: Como escrevo numeros de 1 a 3 por extenso?

Coloque o codigo em vermelho em um arquivo.PHP e faça o teste, os comentários são auto-explicativos.


&lt;html&gt;
 &lt;body&gt;
  &lt;?php
   //Utilizando a cláusula "IF"
   //Escrevendo numeros de 1 a 3.. troque o valor da variável e veja o que acontece.
   $numero = 2;
   if($numero == 1) //Se $numero for igual a 1..
   {
    echo("Um"); //Imprima palavra "Um"
   }
   else if ($numero == 2) //Se $numero for igual a 2..
   {
    echo("Dois"); //Imprima palavra "Dois"
   }
   else if ($numero == 3) //Se $numero for igual a 3..
   {
    echo("Três"); //Imprima palavra "Três"
   }
   else //Senão...&nbsp;
   {
    echo("Número não identificado"); //Imprima que não identificou o numero
   }
  ?&gt;
 &lt;/body&gt;
&lt;/html&gt;


Outra estrutura de controle muito utilizada também é o SWITCH que funciona como um "chaveador" dependendo do valor da variável.
Como o SWITCH verifica todas as possibilidades, precisamos dar um BREAK; no final da possibilidade correta para que o programa possa sair fora do SWITCH, senão ele executará todas as possibilidades em série.
Vamos ao exemplo para entender melhor...
Copie e cole o código abaixo, em vermelho; em um arquivo.PHP e rode para ver o resultado...


&lt;html&gt;
 &lt;body&gt;
  &lt;?php
   //Utilizando o SWITCH
   //Vamos utilizar o mesmo exemplo de escrever o nome dos numeros utilizado no exemplo de IF
   //Troque o valor que inicializa a variável e confira os resultados..&nbsp;
   
   $numero = 3; //Variavel de controle inicializada
   
   switch($numero) //Variávelde controle dentro do switch
   {
    case 1: //Variável contém o valor 1?
     echo "Número Um"; //Se sim.. imprime o nome do numero...&nbsp;
     break; // Para de efetuar verificões e sai do laço
    
    case 2: //Variável contém o valor 2?
     echo "Número Dois"; //Se sim.. imprime o nome do numero...&nbsp;
     break; // Para de efetuar verificões e sai do laço
     
    case 3: //Variável contém o valor 3?
     echo "Número Três"; //Se sim.. imprime o nome do numero...&nbsp;
     break; // Para de efetuar verificões e sai do laço
    
    default: //Se não achar nenhum valor correspondente, entra nesta opção
     echo "Número não encontrado!!"; //Imprime que não foi encontrado e sai do laço.
     //Note que não precisamos do break; aqui porque já é a ultima opção e não verificará mais nada a partir daqui... então break; não é necessário.
   }
  ?&gt;
 &lt;/body&gt;
&lt;/html&gt;


Estrutura de controle FOR...
Basicamente, o que acontece é.. para um determinado valor Y, execute a operação tantas vezes até que este valor atinja um limite X.
Vamos ao exemplo para entenderem melhor..
Copiar e colar o código abaixo em vermelho em um arquivo.PHP e testar...


&lt;html&gt;
 &lt;body&gt;
  &lt;?php
   //Utilizando o FOR
   $x = 20; //Inicializando a variável com o valor que se deseja contar..&nbsp;
   
   for($i=1 ; $i &lt;= $x ; $i++) //Enquanto $i for menor ou igual a $x, execute o comando abaixo e ao término some 1 ao valor de $i
   {
    echo "$i &lt;br&gt;"; //Imprima o valor de $i e pule uma linha..&nbsp;
   }
  ?&gt;
 &lt;/body&gt;
&lt;/html&gt;



Podemos misturar as estruturas de controle como no exemplo abaixo:


&lt;html&gt;
 &lt;body&gt;
  &lt;?php
   //Utilizando o FOR
   $x = 5; //Inicializando a variável com o valor que se deseja contar..&nbsp;
   
   for($i=1 ; $i &lt;= $x ; $i++) //Enquanto $i for menor ou igual a $x, execute o comando abaixo e ao término some 1 ao valor de $i
   {
    switch($i) //Variávelde controle dentro do switch
    {
     case 1: //Variável contém o valor 1?
      echo "Número Um"; //Se sim.. imprime o nome do numero...&nbsp;
      echo "&lt;br&gt;"; //Pulando linha
      break; // Para de efetuar verificões e sai do laço
     
     case 2: //Variável contém o valor 2?
      echo "Número Dois"; //Se sim.. imprime o nome do numero...&nbsp;
      echo "&lt;br&gt;"; //Pulando linha
      break; // Para de efetuar verificões e sai do laço
      
     case 3: //Variável contém o valor 3?
      echo "Número Três"; //Se sim.. imprime o nome do numero...&nbsp;
      echo "&lt;br&gt;"; //Pulando linha
      break; // Para de efetuar verificões e sai do laço
     
     default: //Se não achar nenhum valor correspondente, entra nesta opção
      echo "Número $i não encontrado!!"; //Imprime que não foi encontrado e sai do laço.
      //Note que não precisamos do break; aqui porque já é a ultima opção e não verificará mais nada a partir daqui... então break; não é necessário.
      echo "&lt;br&gt;"; //Pulando linha
    }
   }
  ?&gt;
 &lt;/body&gt;
&lt;/html&gt;


Agora vamos aprender a estrutura WHILE.. ou enquanto uma situação for verdadeira, execute...
Vamos ao exemplo:


&lt;html&gt;
 &lt;body&gt;
  &lt;?php
   //Utilizando o WHILE
   //Altere o valor que estão sendo inicializadas as variáveis e veja o que acontece...
   $valor = 2; //Inicializando o $valor com &nbsp;2
   $resultado = 0; //Inicializando o $resultado com 0 (zero)
   $limite = 500; //Inicializando o $limite com 500
   
   while($valor &lt; $limite) //Enquanto o $valor for menor que o $limite... execute....
   {
    $resultado = $valor * $valor; //$valor multiplicado por ele mesmo é armazenado no resultado..&nbsp;
    echo "$valor multiplicado por $valor é igual a $resultado &lt;br&gt;"; //imprime o novo resultado e pula linha
    $valor = $resultado; //$valor é reiniciado com o conteúdo de $resultado
   }
   echo "$resultado é maior que $limite e por isso paramos de multiplicar!!"; //Imprime quando ultrapassar o limite..
  ?&gt;
 &lt;/body&gt;
&lt;/html&gt;

E ficamos por aqui com as estruturas de controle.. façam mudanças no código, usem a imaginação..

Abraço e até a próxima..