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.

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.

Listagem 12: Iteração em vetor com FOR


$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.

Listagem 13: Sintaxe do operador FOREACH


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:

Listagem 14: Exemplo de uso do FOREACH


$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.