W3docs

PHP Looping: Entendendo o Loop Foreach

O loop foreach é uma ferramenta poderosa para desenvolvedores PHP. Ele oferece uma maneira conveniente de iterar sobre arrays e objetos em um loop.

O loop foreach é a maneira mais conveniente de iterar sobre arrays e objetos em PHP. Ao contrário do loop for, ele não requer contador nem cálculo de tamanho — simplesmente percorre cada elemento na ordem. Este guia abrange sua sintaxe, como ler tanto chaves quanto valores, modificar elementos por referência, loops aninhados e os erros comuns que pegam iniciantes de surpresa.

O que é o Loop Foreach?

O loop foreach é um loop projetado especificamente para arrays e objetos. Ele percorre uma coleção e entrega cada elemento um de cada vez, de modo que você nunca precise gerenciar uma variável de índice ou se preocupar com ultrapassar os limites. Isso o torna ideal tanto para arrays indexados quanto para arrays associativos e objetos iteráveis.

Ele tem duas formas:

  • foreach ($array as $value) — quando você precisa apenas de cada valor.
  • foreach ($array as $key => $value) — quando você também precisa de cada chave.

Se você precisar de um contador, de um passo diferente de 1 ou de repetir um número fixo de vezes não vinculado a um array, use um loop for ou while. Consulte PHP Loops para uma visão geral de todos os tipos de loop.

Sintaxe do Loop Foreach

A sintaxe do loop foreach é simples e direta. Ela consiste na palavra-chave foreach, seguida de um par de parênteses que define o array ou objeto a ser percorrido. Dentro dos parênteses, você define uma variável para armazenar o valor de cada elemento à medida que o loop itera.

Aqui está um exemplo da sintaxe do loop foreach:

Sintaxe PHP do Loop Foreach

foreach ($array as $value) {
    // code to be executed for each element
}

Neste exemplo, $array é o array ou objeto que você deseja percorrer, e $value é a variável que armazena o valor de cada elemento à medida que o loop itera.

Para arrays associativos ou objetos onde você precisa tanto da chave quanto do valor, você pode usar o operador =>:

foreach ($array as $key => $value) {
    // code to be executed for each element
}

Iterando com chaves e valores

Quando um array mapeia chaves para valores, a forma $key => $value fornece ambos de uma vez:

<?php

$capitals = array(
    "France"  => "Paris",
    "Japan"   => "Tokyo",
    "Egypt"   => "Cairo"
);

foreach ($capitals as $country => $city) {
    echo "The capital of $country is $city.\n";
}

Isso imprime:

The capital of France is Paris.
The capital of Japan is Tokyo.
The capital of Egypt is Cairo.

Modificando elementos do array por referência

Por padrão, o foreach copia cada valor, portanto, atribuir à variável do loop não altera o array original. Prefixe o valor com & para iterar por referência e modificar elementos no lugar:

<?php

$prices = array(10, 20, 30);

foreach ($prices as &$price) {
    $price *= 2;          // changes the real array element
}
unset($price);             // important: break the reference

print_r($prices);

Isso imprime:

Array
(
    [0] => 20
    [1] => 40
    [2] => 60
)

Atenção: sempre use unset($price) após um loop por referência. A variável continua apontando para o último elemento e reutilizá-la em um loop posterior corromperia seus dados silenciosamente — um dos bugs mais comuns em PHP.

Uso do Loop Foreach

O loop foreach é usado para percorrer arrays e objetos. Ele permite acessar cada elemento do array ou object um por um e executar uma ação específica para cada elemento. Por exemplo, você pode usar o loop foreach para imprimir todos os elementos de um array ou para realizar um cálculo para cada elemento em um object.

Aqui está um exemplo de como usar o loop foreach em PHP:

Uso PHP do Loop Foreach

php— editable, runs on the server

Neste exemplo, criamos um array de cores e usamos o loop foreach para imprimir cada cor do array. O loop itera sobre os elementos do array $colors e, para cada iteração, o valor do elemento atual é atribuído à variável $color.

Exemplos do Loop Foreach

O loop foreach é uma ferramenta flexível que pode ser usada de várias maneiras. Aqui estão alguns exemplos de como você pode usar o loop foreach em seu código PHP:

  • Imprimindo os elementos de um array:

PHP Imprimindo os elementos de um array usando o loop foreach

php— editable, runs on the server
  • Calculando a soma de um array:

PHP Calculando a soma de um array usando o loop foreach

php— editable, runs on the server
  • Acessando as propriedades de um object:

PHP Acessando as propriedades de um object no loop foreach

<?php

class Person {
    public $name;
    public $age;

    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
}

$people = array(
    new Person("John", 25),
    new Person("Jane", 30),
    new Person("Jim", 35)
);

foreach ($people as $person) {
    echo "Name: " . $person->name . ", Age: " . $person->age . "<br>";
}

?>

Neste exemplo, criamos uma classe Person com duas propriedades, name e age. Em seguida, criamos um array de objetos Person e usamos o loop foreach para acessar as propriedades de cada object Person. O loop itera sobre os elementos do array $people e, para cada iteração, o valor do object Person atual é atribuído à variável $person. Usamos então o operador -> para acessar as propriedades do object Person.

Loops Foreach Aninhados

Para percorrer um array multidimensional, aninhe um foreach dentro de outro. O loop externo percorre as linhas e o loop interno percorre as colunas de cada linha:

<?php

$matrix = array(
    array(1, 2, 3),
    array(4, 5, 6)
);

foreach ($matrix as $row) {
    foreach ($row as $cell) {
        echo $cell . " ";
    }
    echo "\n";   // new line after each row
}

Isso imprime:

1 2 3
4 5 6

Controlando o Loop com break e continue

Dentro de um foreach você pode usar break para interromper o loop antes do fim e continue para pular para o próximo elemento:

<?php

$numbers = array(1, 2, 3, 4, 5, 6);

foreach ($numbers as $number) {
    if ($number % 2 !== 0) {
        continue;        // skip odd numbers
    }
    if ($number > 4) {
        break;           // stop once we pass 4
    }
    echo $number . " ";
}

Isso imprime:

2 4

Os números ímpares 1, 3 e 5 são ignorados pelo continue; 2 e 4 são impressos; e quando o loop chega ao número par 6 (maior que 4), o break o interrompe completamente.

Conclusão

O loop foreach é uma ferramenta essencial para desenvolvedores PHP. Ele fornece uma maneira conveniente e fácil de usar para iterar sobre arrays e objetos, permitindo acessar e executar ações em cada elemento. Seja para imprimir os elementos de um array, calcular somas ou acessar propriedades de objetos, o loop foreach é uma ferramenta versátil que pode ser usada de diversas maneiras.

Então, por que não tentar usar o loop foreach no seu código PHP hoje e ver como ele pode simplificar e agilizar o seu processo de desenvolvimento?

Prática

Prática
O que o loop 'foreach' do PHP faz?
O que o loop 'foreach' do PHP faz?
Was this page helpful?