PHP: Estruturas de repetição For e Foreach

Nesta documentação apresentamos as estruturas de repetição For e Foreach no PHP, recursos que possibilitam executar trechos de código repetidamente.

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:

Exemplo de uso:


for ($i=0; $i < 10; $i++) {
    echo $i."<br>";
}
Run

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;
Run

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>";
}
Run

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>";
}
Run

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;
Run

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.

Artigos relacionados