W3docs

foreach

Le mot-clé "foreach" est une structure de boucle en PHP permettant d'itérer sur des arrays et des objects. Découvrez sa syntaxe et son utilisation.

La boucle foreach en PHP

foreach est la boucle dédiée de PHP pour itérer sur des arrays et des objects. Contrairement à une boucle for, elle n'a pas besoin d'un compteur ni d'un index — elle parcourt automatiquement chaque élément, un par un, ce qui en fait la façon la plus courante et la moins sujette aux erreurs de traiter une collection en PHP.

Ce chapitre couvre les deux formes de foreach, l'itération par référence, le déballage des arrays imbriqués avec list(), le piège le plus courant, et quand choisir foreach plutôt que les autres boucles PHP.

Syntaxe

foreach possède deux formes.

Valeur seule — quand seule la valeur de chaque élément vous intéresse :

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

Clé et valeur — quand vous avez également besoin de la clé de l'array (indispensable pour les arrays associatifs) :

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

À chaque passage, PHP copie l'élément courant dans $value (et sa clé dans $key), puis avance vers l'élément suivant jusqu'à ce que l'array soit épuisé.

Itérer sur un array indexé

php— editable, runs on the server

Itérer sur un array associatif

Avec la forme $key => $value, vous obtenez les deux moitiés de chaque paire :

<?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

Modifier des valeurs par référence

Par défaut, $value est une copie, donc la modifier à l'intérieur de la boucle n'affecte pas l'array d'origine. Préfixez-la avec & pour itérer par référence et répercuter les modifications :

<?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
// )

Attention : faites toujours unset($price) après une boucle par référence. La variable pointe toujours vers le dernier élément, donc une affectation ultérieure à $price — ou un second foreach réutilisant le même nom — corromprait silencieusement l'array.

Déballer des arrays imbriqués avec list()

Lorsque chaque élément est lui-même un array, vous pouvez le déstructurer en ligne avec list() (ou la syntaxe courte [] disponible depuis 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

Quand utiliser foreach

  • Utilisez foreach pour tout array ou itérable dont vous voulez parcourir chaque élément — c'est le choix le plus lisible et il ne peut pas dépasser les limites de l'array.
  • Utilisez une boucle for quand vous avez besoin d'un contrôle précis sur le compteur (saut d'éléments, pas de 2, décompte).
  • Utilisez while quand le nombre d'itérations n'est pas connu à l'avance et dépend d'une condition.

Vous pouvez également quitter un foreach prématurément avec break ou sauter une itération avec continue, exactement comme dans les autres boucles.

Pratique

Pratique
Quel est l'objectif principal de la boucle foreach en PHP d'après https://www.w3docs.com/learn-php/foreach.html ?
Quel est l'objectif principal de la boucle foreach en PHP d'après https://www.w3docs.com/learn-php/foreach.html ?
Was this page helpful?