E ai escoteiro, blz? Em nosso post anterior as coisas começaram a ficar um pouco mais complicadas, mas não se assuste, todo início é difícil e requer força, foco e bastante treino. Nesse post continuaremos falando de estruturas de repetição. Se você já entendeu como o while funciona, as próximas serão melzinho na chupeta.
Do While
O nome é parecido e o funcionamento também, porém existem sutis diferenças entre o while e o do while. Enquanto o while avalia a condição e caso seja verdadeira ele começa a repetir o bloco, o do while já começa a executar e faz a verificação só depois de executar o bloco pelo menos uma vez.
Veja um exemplo:
<?php
$contador = 10;
do {
echo $contador;
echo "\n";
$contador = $contador + 1;
} while ($contador < 5);
Vamos analisar calmamente linha a linha o que esse código faz:
- Antes de mais nada declaramos uma variável $contador com o valor 10;
- Na sequência, independente de qualquer coisa, o interpretador PHP entra no bloco DO e já começa a executar tudo, ou seja, ele vai imprimir o valor atual da variável $contador, que nesse caso é 10, vai imprimir a quebra de linha com o "\n" e por fim ele vai incrementar o valor atual da variável $contador, passando do valor atual que é 10 para 11;
- Só depois de fazer tudo isso ele vai avaliar se o valor atual da variável $contador é menor que 5, e nesse caso não é, então ele não vai repetir o que está dentro do bloco DO.
Não vou investir muito tempo na estrutura DO WHILE, porque além dela ser muito parecida com o WHILE, são poucas as situações onde é interessante usá-la.
For
A estrutura For é bem interessante, e tem o funcionamento um pouco parecido com o while, mas também se difere em alguns pontos. Basicamente tudo que é possível fazer com while é possível fazer com o for e vice-versa, então na maioria das vezes é mais uma questão de gosto pessoal.
Vamos pegar o mesmo exemplo utilizado no post anterior e reescreve-lo com a estrutura FOR.
<?php
$frutas = ["Manga", "Coco", "Uva", "Caju", "Cajá"];
$totalDeFrutas = count($frutas);
for ($i = 0; $i < $totalDeFrutas; $i++) {
echo $frutas[$i];
echo "\n";
}
Assim como o while, o for também recebe uma condição mas ele recebe mais algumas coisas:
- A primeira coisa que passamos para o for é a variável contadora, perceba que nesse exemplo eu a chamei de $i porque é um padrão usado na maioria das linguagens de programação, mas poderia tranquilamente ser $contador como no exemplo do while.
- O segundo item que passamos para o for é a nossa condição, nesse caso a condição passada foi $i < $totalDeFrutas
- E por fim passamos o "passo", o "passo" ou "step" indica como incrementaremos ou decrementaremos o nosso contador. Nesse caso eu usei o operador de pré-incremento. Daqui a pouco vamos ver como ele funciona, mas por enquanto entenda ele como uma maneira curta de escrever $i = $i + 1;
- Perceba que cada item passado para o for é separado por ";" (ponto e virgula) e não por "," (virgula).
- Tudo estando ok e a condição sendo satisfeita, o for repetirá o seu bloco.
Foreach
O Foreach é o mais fácil de entender e usar, porém é extremamente útil e muito utilizado em nosso dia-a-dia como desenvolvedor.
Veja esse exemplo e na sequência vamos analisar linha a alinha
<?php
$frutas = ["Manga", "Coco", "Uva", "Caju", "Cajá"];
foreach($frutas as $fruta) {
echo $fruta;
echo "\n";
}
O Foreach serve para percorrer elementos iteráveis, ou seja, arrays e outras estruturas que você aprenderá no futuro. Mas, o que seria "percorrer"?
Nesse contexto percorrer é "dar voltas" no array passando por cada elemento, então para que o foreach funciona precisamos passar para ele duas informações
- O array ou elemento iterável
- Uma variável que receberá o valor atual da iteração
Pareceu confuso? Eu explico melhor.
No exemplo acima nós, antes de mais nada, declaramos uma variável $frutas e atribuímos a ela um Array contendo 5 itens (strings);
Na sequência passamos para o foreach essa variável $frutas e dizemos: "Olha foreach, toda vez que você passar por um elemento desse Array, pegue o valor atual e salve nessa variável que estou passando aqui também". E qual é essa variável? A variável $fruta (no singular). Ou seja, para cada volta uma fruta será atribuída à variável $fruta.
Então o foreach vai entrar em ação e fazer os seguintes passos:
- Ler a variável $frutas e carregar na memória todos os itens do Array;
- Ele vai se perguntar: "Qual é o primeiro item desse Array?", "Ah, é o item Manga". Então ele vai pegar esse valor "Manga" e atribuir à variável $fruta e logo na sequência ele vai entrar no bloco de baixo que tem 2 comandos.
- Imprima o valor atual da variável $fruta (que nesse momento é "Manga")
- Imprima uma quebra de linha
- Terminando isso ele vai se perguntar: "Blz, qual o próximo item agora?", "Ah sim, é o Coco". Então ele vai pegar esse valor "Coco" e atribuir novamente à variável $fruta, ou seja, ele vai apagar o valor antigo e salvar esse novo, e na sequência ele vai entrar no bloco de baixo e executar os 2 comandos.
Ele vai repetir isso até que ele tenha passado por todos os itens desse Array.
Viu como é simples?
O Foreach nos permite também obter o índice do elemento que está sendo iterado naquele momento. E é bem simples.
<?php
$frutas = ["Manga", "Coco", "Uva", "Caju", "Cajá"];
foreach($frutas as $chave => $valor) {
echo "A fruta $valor está na posição $chave do array";
echo "\n";
}
Agora é a hora de você praticar
Desafio
Crie um programa que solicite do usuário o total de números que ele quer cadastrar, na sequência utilize um bloco for para solicitar ao usuário cada um desses números e os cadastre em um array chamado $numeros. Na sequência percorra todos os itens desse Array com o foreach mas imprima apenas os números pares (Utilize a estrutura IF para isso).
Pois é, pequeno escoteiro, estamos cada vez mais próximo do fim da nossa jornada, mas ainda falta muita coisa a ser estudada. Não fique ansioso, vamos dar um passo de cada vez. Acredite, você está se saindo melhor do que você imagina.
Até a próxima!!!