Estruturas de repetição são recursos que permitem executar mais de uma vez trechos de código de acordo com uma condição. O PHP possui quatro estruturas de repetição: for, foreach, while e do-while.
Neste documento apresentamos as estruturas de repetição for e foreach.
Confira todos os nossos Cursos de PHP
Tópicos
For
O for é a estrutura de repetição do PHP que utilizamos quando sabemos a quantidade de repetições que devem ser executadas.
Sintaxe do for:
for (expressão 1; expressão 2; expressão 3) { // bloco de código }
A sintaxe é composta por três expressões separadas por ponto e vírgula, cada uma delas podendo ter zero, uma ou mais declarações separadas por vírgula:
- Expressão 1: Executada somente uma vez, ao iniciar o loop. Normalmente a utilizamos para declarar e inicializar as variáveis que faremos uso para controlar o número de iterações do loop;
- Expressão 2: Expressão booleana, validada antes de cada iteração do loop. Se a expressão contiver múltiplas expressões, todas serão executadas, mas somente o resultado da última será considerado. Se a expressão for vazia, ela será interpretada como verdadeira. O loop somente será executado enquanto essa expressão retornar true;
- Expressão 3: Executada ao final de cada iteração, normalmente a utilizamos para declarar a forma de atualização do valor da variável avaliada na expressão 2.
Exemplo de uso:
for ($i=0; $i < 10; $i++) { echo $i."<br>"; }
Ao executar este código serão impressos os números de 0 a 9.
Nota: O for pode ser declarado sem um bloco de código, colocando as ações dentro da terceira expressão. Ademais, caso haja apenas uma linha a ser executada, as chaves são opcionais. No entanto, recomenda-se o uso delas mesmo nestas ocasiões, visando manter uma boa legibilidade do código.
Em PHP, também podemos declarar o for utilizando a sintaxe alternativa, com “dois pontos” e endfor.
Exemplo de uso:
for ($i = 0; $i < 10; $i++): echo $i."<br>"; endfor;
Foreach
O foreach é uma simplificação do operador FOR para se trabalhar em coleções de dados, ou seja, vetores e matrizes. Ele permite acessar cada elemento individualmente iterando sobre toda a coleção e sem a necessidade de informação de índices.
Por exemplo, supondo que fosse preciso percorrer um vetor com alguns elementos com o FOR. Seria necessário utilizar um contador para servir também de índice para acessar cada elemento, conforme a listagem a seguir.
$vetor = array(1, 2, 3, 4, 5); for($i = 0; $i < 5; $i++) { $item = $vetor[$i]; echo $item; }
Esse código poderia ser simplificado com a utilização do operador FOREACH, cuja sintaxe é mostrada abaixo.
foreach(vetor as variável) { //variável representa um elemento do vetor a cada iteração }
Então, reescrevendo o código da Listagem 12, teríamos:
$vetor = array(1, 2, 3, 4, 5); foreach($vetor as $item) { echo $item; }
Assim, a cada iteração (repetição) a variável $item representa um elemento do vetor.
Break
As estruturas de repetição possuem um comando para finalizar um loop caso seja necessário, o comando break. Com ele podemos interromper a execução de um loop a qualquer momento.
Exemplo de uso:
$pararLoop = 9; for($numero = 0; ; $numero++){ if($numero == $pararLoop){ break; } echo $numero."<br>"; }
Ao executar este código o loop declarado dentro do for será processado até que a condição criada para chamar o break seja verdadeira; neste caso, numero ser igual a pararLoop. O resultado será a impressão dos valores de 0 a 8.
Continue
Além do break, podemos declarar a palavra reservada continue em uma estrutura de repetição. Quando executada, os comandos subsequentes do bloco de código serão desconsiderados e uma nova iteração iniciada.
Exemplo de uso:
for($i = 0; $i < 10; $i++){ if($i % 2 == 0){ continue; } echo $i."<br>"; }
Ao executar este código serão impressos os números ímpares entre 0 e 10. Para não imprimir os números pares, utilizamos o continue, que pulará para a próxima iteração do loop toda vez que o resto da divisão do valor de i por 2 for igual a 0.
Exemplo prático
Suponha que você precisa apresentar ao usuário o total da soma dos valores de uma coleção de números. Para programar esse código, podemos utilizar a estrutura de repetição for.
Exemplo de uso:
$colecao = [1, 3, 6, 9, 13]; $soma = 0; for($i = 0, $j = count($colecao); $i < $j; $i++){ $soma += $colecao[$i]; } echo $soma;
Note que na expressão 1 do for declaramos e inicializamos duas variáveis (i e j) utilizando a vírgula para separar esses códigos. Ao executar esta implementação será impresso o resultado da soma dos números da coleção: 32.