For, Foreach, While e Do While em PHP

Postado por Luiz Otávio em 03/12/2011 às 14:42:32 na categoria Webmaster

E para continuar com nosso curso simples e direto sobre o PHP, hoje vamos aprender um pouco mais sobre os laços, também chamados de loops, repetições ou ainda a junção das palavras "laços" e "repetição" (Laços de repetição).

Irei detalhar as funções for(), foreach(), while() e do-while() do PHP, com exemplos e explicações bastante simples para leigos e usuários mais avançados.

Normalmente os laços são bastante utilizados na maioria das linguagens de programação e tem funções bastante simples ou complexas dependendo do contexto do código. Com os laços você pode fazer com que o PHP siga alguma instrução repetidamente enquanto um valor qualquer não for atingido, por exemplo:

  • Eu posso fazer com que meu script conte até 1000 sem ter que escrever 1000 linhas de código com este comando.
  • Eu posso fazer o meu script imprimir o alfabeto de A a Z sem ter que escrever 26 vezes o comando "echo A;", "echo B;" ... "echo Z;".
  • Eu posso fazer o meu script imprimir um array() por completo sem saber a quantidade exata de valores que ele tem;
  • Eu posso fazer o meu script pegar os valores retornados por uma consulta no banco de dados e imprimir na tela do usuário de maneira sequencial;
  • Enfim, eu posso fazer milhares de coisas com meu script de maneira automática;

Para dar início ao nosso tutorial, vamos começar com o mais básico e bastante utilizado "for()", veja abaixo.

Utilizando a função for()

O for() é bastante utilizado em milhares de scripts PHP, com ele você pode fazer o PHP executar determinada função até que um número limite seja atingido. A única coisa que você precisa saber é o número de voltas que seu laço terá, caso contrário a sua função será infinita e provavelmente seu servidor ou o computador cliente irá travar.

A estrutura do for() é:

 
 
 for($i = 0; $i < 10; $i++)
 {
     echo $i;
 } 

 

Como você pode notar no trecho de código acima que mostra a estrutura da função for(), utilizamos uma variável $i (por convenção) para determinar os valores da mesma, no entanto, você pode utilizar qualquer variável que for mais útil no seu caso.

A estrutura começa com a palavra for e as condições vem logo em seguida dentro de parênteses. As condições começam com um valor inicial para a variável determinada ($i = 0 para nosso exemplo) seguida de ponto e vírgula, em seguida determinamos o valor limite para nossa variável temporária ($i < 10;) para nosso exemplo, por fim incrementamos a variável $i com os valores que precisamos na nossa função, para nosso caso estamos utilizar o incremento ++ (que significa mais um). Os comandos a serem executados vem dentro de chaves{}.

Para nossa função indicada anteriormente, teremos o valor 0123456789.

Veja mais um exemplo de for();

Criamos um array:

 
 
 $meuArray = array("Eu", "estou", "aprendendo", "PHP", "no", "TEO"); 

 

Seu resultado ficaria assim:

 
 
 Array
 (
 [0] => Eu
 [1] => estou
 [2] => aprendendo
 [3] => PHP
 [4] => no
 [5] => TEO
 ) 

 

Como você pode notar no array acima, temos 6 chaves (0 a 5) com valores diferentes em cada uma delas, como eu sei que são 6 chaves, eu poderia utilizar o for() para imprimir os valores na tela.

 
 
 $meuArray = array("Eu", "estou", "aprendendo", "PHP", "no", "TEO");
 
 for($i = 0; $i < 6; $i++)
 {
     echo $meuArray[$i] . ' ';
 } 

 

Isso iria imprimir "Eu estou aprendendo PHP no TEO" na tela do navegador do seu cliente.

Lembre-se que já falamos sobre a concatenação de variáveis, fizemos isso utilizando o ponto (.) na função anterior para concatenar um espaço em branco ( . ' ' ) em cada variável.

Eu também posso utilizar o for() sem saber o número total de valores que meu array tem, para isso eu precisaria contar estes valores com a função "count()" do PHP, veja o mesmo exemplo anterior contando os valores do array.

 
 
 // Array
 $meuArray = array("Eu", "estou", "aprendendo", "PHP", "no", "TEO");
 
 // Número total de valores do array
 $numMeuArray = count($meuArray);
 
 // Laço 
 for($i = 0; $i < $numMeuArray; $i++)
 {
 
     // Imprime o valor concatenado com espaço    
     echo $meuArray[$i] . ' ';
 
 } 

 

Agora sim! Meu array pode ter 10, 1000, 100.000, ou qualquer número de valores, eu não precisarei me preocupar com o valor total, a função count() vai determinar o número limite para o for() parar de executar o laço.

Lembre-se que já falamos sobre os comentários (que vem depois de duas barras //) na aula sobre variáveis.

Na última função, onde utilizamos o count() para contar os valores totais do array, poderíamos deixá-la ainda mais simples com a utilização da função foreach() ao invés de for(), veja a seguir.

Utilizando a função foreach()

O foreach() é um dos laços mais utilizados por mim e creio que pela maioria dos outros programares. Com esta função você pode manipular os valores de um array sem saber o limite para finalização do laço, ela já faz tudo automaticamente, você só precisa falar o array e especificar uma variável temporária, veja a estrutura.

 
 
 foreach($meuArray as $MinhaVariavel)
 {
     echo $MinhaVariavel . ' ';
 } 

 

A estrutura é bastante simples, utilizo a palavra foreach seguida de parênteses, dentro dos parênteses coloco meu array e utilizo a palavra "as" (como) uma variável temporária qualquer.

Você também pode pedir para o array descrever a chave juntamente com o valor do seu array, veja outro exemplo:

 
 
 // Array
 $meuArray = array("Eu", "estou", "aprendendo", "PHP", "no", "TEO");
 
 // Laço 
 foreach($meuArray as $MinhaChave => $MinhaVariavel)
 {
     echo $MinhaChave . ' = ' . $MinhaVariavel . ' ';
 } 

 

Agora o valor do nosso array seria imprimido de maneira diferente na tela do navegador do nosso cliente.

 
 
 0 = Eu
 1 = estou
 2 = aprendendo
 3 = PHP
 4 = no
 5 = TEO 

 

Com o foreach eu também posso criar variáveis dos valores das chaves do meu array automaticamente, para isso eu preciso utilizar "Variáveis variáveis", eu sei que o nome é meio confuso, mas para resumir é uma variável que varia (nossa, acho que piorei as coisas).

Veja um exemplo:

 
 
 // Array
 $meuArray = array(
         "Chave1" => "Eu", 
         "Chave2" => "estou", 
         "Chave3" => "aprendendo", 
         "Chave4" => "PHP", 
         "Chave5" => "no", 
         "Chave6" => "TEO"
         );
 
 // Laço 
 foreach($meuArray as $MinhaChave => $MinhaVariavel)
 {
     
     // Cria a variavel variavel    
     $$MinhaChave = $MinhaVariavel;
 
 }
 
 // Imprime "Eu"
 echo $Chave1; 

 

Para isso eu preciso ter valores não numéricos nas minhas chaves, é muito útil quando estamos utilizando valores retornados de um $_POST ou de um array retornado de uma consulta MySQL (você ainda vai ver isto). O fato é que utilizando o foreach e as variáveis variáveis na função acima, criamos 6 variáveis ($Chave1, $Chave2, $Chave3, $Chave4, $Chave5, $Chave6).

Utilizando a função while()

While significa "enquanto" no inglês, isso quer dizer que utilizando a função while() meu script irá executar determinado comando enquanto determinado valor for verdadeiro. Eu poderia, por exemplo, utilizar while() da mesma forma que for(), veja no exemplo abaixo:

 
 
 // Array
 $meuArray = array("Eu", "estou", "aprendendo", "PHP", "no", "TEO");
 
 // Valor inicial
 $i = 0;
 
 // Laço 
 while($i < 6)
 {
     echo $meuArray[$i] . ' ';
     $i++;
 } 

 

Eu confesso que nunca utilizei alguma função parecida com a anterior, while() é mais utilizado para imprimir valores retornados de uma consulta MySQL, veja o exemplo:

 
 
 $consulta = "SELECT valor FROM tabela";
 $executaConsulta = mysql_query($consulta);
 
 while($linha = mysql_fetch_array($executaConsulta))
 {
     echo $linha['valor'];
 } 

 

Eu não vou comentar sobre a função acima para não confundir nosso curso, MySQL iremos aprender nas próximas aulas.

Utilizando a função do-while()

"Do" significa "Fazer" em inglês, combinado com a função "While", teremos algo semelhante a "Faça - Enquanto". Do-While() funciona praticamente igual ao While(), mas o PHP executa a tarefa primeiro e só depois checa se o valor é satisfeito, veja o exemplo:

 
 
 // Array
 $meuArray = array("Eu", "estou", "aprendendo", "PHP", "no", "TEO");
 
 // Valor inicial 
 $i = 0;
 
 // Laço 
 do
 {
     echo $meuArray[$i] . ' ';
     $i++;
 }
 while($i < 6) 

 

Ou seja, você manda o PHP fazer o que deseja e depois checa se o número foi atingido. Particularmente, em 7 anos trabalhando com isso, juro que nunca utilizei a função do-while(), mas pode ser que em alguns casos seja útil no seu script, então está detalhado.

Aulas anteriores

Veja o que você já aprendeu aqui no TEO:

Mais sobre: For Foreach While Do While PHP

Mais sobre "Webmaster"

Ver tudo sobre "Webmaster"

Comentários

Deixe a sua opinião, recado ou dúvida abaixo:

Comentar usando o facebook

Prih disse:

Em 02/02/2013 às 11:47:40

O site está de parabéns!

Gostaria de saber como funciona os tutoriais, alguns acompanham video aula e outros não??
bjs!

Responder para Prih | Denunciar

Comentar usando o TEO

Nome *:
Email *:
Twitter (@nomedoseuusuario):
Quanto é *?
Comentário *:
Campos Obrigatórios *

siga o teo »

Feed / RSS Todo Espaço Online no Twitter Todo Espaço Online no Facebook Todo Espaço Online no Google+

receba no email »

compartilhe »

mais recente »

mais lidas »

linkerama »

facebook »

parceiros »

Copyright © 2011 todoespacoonline.com ®. Todos os direitos reservados.