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:
- [Aula 1] Instalando o servidor Web
- [Aula 2] Criando o primeiro script PHP
- [Aula 3] Entendendo e utilizando variáveis
- [Aula 4] Entendendo e utilizando constantes
- [Aula 5] Tipos de dados: Boolean, Integers, float e Strings
- [Aula 6] Tipos de dados Array
- [Aula 7] Tipos de Operadores
- [Aula 8] IF, ELSE e ELSEIF em PHP
- [Aula 9] For, Foreach, While e Do While em PHP
- [Aula 10] Cookies e sessões em PHP
Mais sobre "Webmaster"
Comentários
Deixe a sua opinião, recado ou dúvida abaixo:








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