W3docs

foreach

O "foreach" é uma estrutura de repetição em PHP usada para iterar sobre arrays e objetos. Conheça sua sintaxe e uso.

O Loop foreach em PHP

foreach é o loop dedicado do PHP para iterar sobre arrays e objetos. Ao contrário de um loop for, ele não precisa de um contador ou índice — percorre cada elemento automaticamente, um de cada vez, tornando-se a forma mais comum e menos propensa a erros de processar uma coleção em PHP.

Este capítulo abrange as duas formas do foreach, iteração por referência, desestruturação de arrays aninhados com list(), a armadilha mais comum e quando usar foreach em vez dos outros loops PHP.

Sintaxe

O foreach tem duas formas.

Apenas valor — quando você só precisa do valor de cada elemento:

foreach ($array as $value) {
  // do something with $value
}

Chave e valor — quando você também precisa da chave do array (essencial para arrays associativos):

foreach ($array as $key => $value) {
  // do something with $key and $value
}

Em cada passagem, o PHP copia o elemento atual em $value (e sua chave em $key), depois avança para o próximo elemento até que o array seja esgotado.

Iterando um array indexado

php— editable, runs on the server

Iterando um array associativo

Com a forma $key => $value você obtém ambas as partes de cada par:

<?php

$person = ["name" => "John", "age" => 30, "city" => "New York"];

foreach ($person as $key => $value) {
  echo $key . ": " . $value . PHP_EOL;
}

// Output:
// name: John
// age: 30
// city: New York

Modificando valores por referência

Por padrão, $value é uma cópia, portanto alterá-lo dentro do loop não afeta o array original. Prefixe-o com & para iterar por referência e gravar as alterações de volta:

<?php

$prices = [10, 20, 30];

foreach ($prices as &$price) {
  $price *= 2;          // modifies the array in place
}
unset($price);          // important: break the reference

print_r($prices);

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

Atenção: sempre use unset($price) após um loop por referência. A variável ainda aponta para o último elemento, então uma atribuição posterior a $price — ou um segundo foreach reutilizando o nome — corromperia silenciosamente o array.

Desestruturando arrays aninhados com list()

Quando cada elemento é em si um array, você pode desestruturá-lo inline usando list() (ou a sintaxe curta [] no PHP 7.1+):

<?php

$points = [[1, 2], [3, 4], [5, 6]];

foreach ($points as [$x, $y]) {
  echo "x=$x, y=$y" . PHP_EOL;
}

// Output:
// x=1, y=2
// x=3, y=4
// x=5, y=6

Quando usar foreach

  • Use foreach para qualquer array ou iterável onde você deseja todos os elementos — é a escolha mais clara e não pode ultrapassar o fim do array.
  • Use um loop for quando precisar de controle fino sobre o contador (pular, avançar de 2 em 2, contagem regressiva).
  • Use while quando o número de iterações não é conhecido antecipadamente e depende de uma condição.

Você também pode sair de um foreach antecipadamente com break ou pular uma iteração com continue, exatamente como em outros loops.

Prática

Prática
Qual é o principal propósito do loop foreach em PHP com base em https://www.w3docs.com/learn-php/foreach.html?
Qual é o principal propósito do loop foreach em PHP com base em https://www.w3docs.com/learn-php/foreach.html?
Was this page helpful?