Laços de repetição permitem que executemos um bloco de código repetidamente.
Vamos ver cada um dos laços: for, while, do while e for each
For
for significa “para” em português.
O laço for repete um bloco de código um número especificado de vezes.
segue sintaxe para uso do for.
<?php
for (início; condição; incremento) {
instrucões;
}
- inicio É um número que marca o início da contagem. É executado uma vez quando o loop(laço) é iniciado. Tradicionalmente é usada a variável $i, exemplo: $i = 0.
- condição: É uma expressão de comparação. Exemplo: $i < 4 ou $i == 100. Enquanto a condição for verdadeira, a instrução no corpo é executada. Caso contrário, o loop termina.
- incremento: É uma variável que recebe um número que irá aumentando(sendo incrementado) até a condição ser falsa. Exemplo: $i++ ou $i +=2 ou ainda –$i. Para entender esses incrementos e decrementos veja o artigo 011.
Exemplo:
<?php
for ($i=0; $i <= 10 ; $i++) {
echo $i . "<br>";
}
?>
Acima $i inicia em 0. Na condição, enquanto $i for menor ou igual(<=) a 10 haverá repetição. No incremento, $i aumenta de um em um a cada interação que acontece enquanto a condição for verdadeira.
resultado: echo exibe o valor de $i em cada repetição. O “<br>” faz com que cada número apareça em uma nova linha.
0 1 2 3 4 5 6 7 8 9 10
Podemos inicializar o $i com qualquer número. Também podemos incrementar de dois em dois, três em três…. ao invés de um em um.
<?php
for ($i =0; $i <= 10 ; $i+=2){
echo "$i, ";
}
?>
O resultado acima é: 0, 2, 4, 6, 8, 10,
Sintaxe alternativa para o for
Podemos usar ): e endfor para substituir as chaves
<?php
for ($i=0; $i <= 10 ; $i++):
echo $i . "<br>";
endfor;
?>
Podemos também iniciar com um um valor alto e irmos decrementando($i–), diminuindo ele. Perceba abaixo que usei o símbolo de maior ou igual(>=) e não de menor ou igual(<=).
<?php
for ($i=100; $i >= 0 ; $i-=2){
echo "$i, ";
}
?>
O resultado será: 100, 98, 96, 94, 92, 90, 88, 86, 84, 82, 80, 78, 76, 74, 72, 70, 68, 66, 64, 62, 60, 58, 56, 54, 52, 50, 48, 46, 44, 42, 40, 38, 36, 34, 32, 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2, 0,
Podemos criar um loop infinito, isto é, uma repetição infinita; uma das formas é tirar a condição. Cuidado, às vezes o loop infinito pode acontecer por má codificação e ser motivo de bug no sistema.
<?php
for ($i=0; ; $i++){
echo "$i, ";
}
?>
no laço for a variável inicializadora “$i = 0” pode ficar fora do for
<?php
$i = 0;
for (; ; $i++){
echo "$i, ";
}
?>
For Each
for each significa “para cada” em português.
Sintaxe:
<?php
foreach ($nome_array as $elemento) {
// lida com os elementos de array aqui
}
?>
O PHP fornece a instrução foreach que permite iterar sobre os elementos de um array.
Não vimos arrays ainda mas pense nele como uma lista. Exemplo:
$lista = [‘manga’,’goiaba’,’laranja’];
echo $lista[0]; exibirá manga.
O laço foreach itera com todos os elementos em um array, um de cada vez. Portanto, você não precisa saber o número de elementos em um array.
Para trazer todas as posições podemos usar o for, mas com foreach tudo se torna mais fácil.
<?php
$lista_frutas = ['manga','goiaba','laranja'];
foreach ($lista_frutas as $lista ) {
echo "$lista, ";
}
?>
O resultado será: manga, goiaba, laranja,
Acima, em cada iteração, o PHP atribui o próximo elemento do array $lista_frutas à variável $lista. Quando atinge o último elemento, o loop termina.
While
While significa “enquanto” em português.
O laço while executa um bloco de código enquanto uma expressão for verdadeira.
A condição ou teste ficará sendo avaliada e o loop continuará até que a expressão seja considerada falsa.
A sintaxe é:
<?php
while (condição) {
código a ser executado;
}
?>
Exemplo 1
<?php
$i = 0;
while($i <= 20){
$i++;
echo " $i,";
}
?>
O resultado será: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
Preste atenção que no while a variável inicializadora($i = 0) fica fora.
- $i = 0; Inicialize o contador ($i) e define o valor inicial como 0
- $i <= 20 Continua o loop enquanto $i for menor ou igual a 20
- $i++ Em cada interação(repetição) aumenta o valor do contador em 1
Exemplo 02
<?php
$i = 1;
while($i <= 100){
$i *= 2;
echo "O número é $i <br>";
}
?>
- $i = 1 o contador inicializa em 1.
- $i <= 100 a condição será verdadeira enquanto $i for menor ou igual a 100
- $i *= 2 $i em cada repetição(iteração) será igual ele mesmo multiplicado por 2
O resultado será:
o número é 2
o número é 4
o número é 8
o número é 16
o número é 32
o número é 64
o número é 128
Exemplo 3
Abaixo imprimimos na tela os títulos do html
<?php
$i = 1;
while($i <= 100){
$i *= 2;
echo "O número é $i <br>";
}
?>
Fique atento, como o incremento($i *= 2;) é multiplicação, o contador($i = 1;) tem que ser diferente de zero, pois qualquer número multiplicado por zero é igual a zero, então entraríamos em um loop infinito.
resultado será:
O número é 2 O número é 4 O número é 8 O número é 16 O número é 32 O número é 64 O número é 128
Exemplo 4:
Iremos fazer uma soma simples
<?php
$i = 1;
$x = 5;
while($i < 10){
$i++;
echo "<br> $i vezes $x = " . $i*$x;
?>
Resultado:
2 vezes 5 = 10
3 vezes 5 = 15
4 vezes 5 = 20
5 vezes 5 = 25
6 vezes 5 = 30
7 vezes 5 = 35
8 vezes 5 = 40
9 vezes 5 = 45
10 vezes 5 = 50
Sintaxe Alternativa do while
Podemos substituir as chaves por : e endwhile
<?php
$i = 0;
$valor_final;
while($i < 6):
$i++;
$valor_final = $i;
echo "<h$i>Título $i</h$i> ";
endwhile;
echo " O valor final é = $valor_final";
?>
Quando a variável está fora do bloco, como é o caso de $valor_final, ela pegará somente o último valor.
Resultador será a impressão de títulos e subtítulos do HTML.
do…while
do while significa “faça enquanto” em português.
o do..while sempre executará o bloco de código pelo menos uma vez, não importa se a condição é falsa logo no início. Depois repetirá o loop enquanto uma condição for verdadeira.
Sintaxe:
do {
código a ser executado;
}
while (condição);
Outra diferença entre o do..while e o while é que no do..while o PHP analisa a “condição” no final de cada iteração. Por outro lado, no while o PHP analisa a condição no início de cada iteração.
Exemplo 1:
O exemplo a seguir incrementará o valor de i pelo menos uma vez e continuará incrementando a variável i enquanto ela tiver um valor menor que 10
<?php
$i = 12;
do {
$i++;
echo "$i, ";
} while ($i < 10);
?>
O resultado será: 12,
Veja que a condição($i < 10) já começa falsa pois $i é maior que 10 e não menor; mesmo assim é impresso o 12.
Vamos alterar o contador para zero.
<?php
$i = 0;
do {
$i++;
echo "$i, ";
} while ($i < 10);
?>
O resultado será: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
Conclusão
Vimos laço de repetição, em inglês é chamado de loop.
Estudamos os loops for, while e do…while e foreach.
No próximo artigo dessa série veremos sobre break e continue.
Comment on “PHP – Aula 015: Laços de Repetição(for, while, do while, for each)”