foreach
(PHP 4, PHP 5, PHP 7, PHP 8)
La structure de langage foreach fournit une façon simple de
parcourir des array et objets Traversable.
foreach générera une erreur lorsqu'il est utilisé avec
une variable contenant un type de données différent ou avec une variable non initialisée.
La première forme passe en revue le tableau
iterable_expression. À chaque itération, la valeur de
l'élément courant est assignée à $value.
La seconde forme assignera en plus la clé de l'élément courant
à la variable $key à chaque itération.
Il est à noter que foreach ne modifie pas le pointeur
interne du tableau, qui est utilisé par les fonctions telles que
current() et key().
Il est possible de personnaliser
l'itération sur des objets.
Exemple #1 Utilisations courantes de foreach
<?php
/* Exemple : valeur uniquement */
$array = [1, 2, 3, 17];
foreach ($array as $value) {
echo "Valeur courante de \$array: $value.\n";
}
/* Exemple : clé et valeur */
$array = [
"un" => 1,
"deux" => 2,
"trois" => 3,
"dix-sept" => 17
];
foreach ($array as $key => $value) {
echo "\$array[$key] => $value.\n";
}
/* Exemple : tableaux clé-valeur multidimensionnels */
$grid = [];
$grid[0][0] = "a";
$grid[0][1] = "b";
$grid[1][0] = "y";
$grid[1][1] = "z";
foreach ($grid as $y => $row) {
foreach ($row as $x => $value) {
echo "Valeur à la position x=$x et y=$y : $value\n";
}
}
/* Exemple : tableaux dynamiques */
foreach (range(1, 5) as $value) {
echo "$value\n";
}
?>
Note:
foreach ne supporte pas la possibilité de
supprimer les messages d'erreur en utilisant le
@.
Extraction des tableaux imbriqués
(PHP 5 >= 5.5.0, PHP 7, PHP 8)
Il est possible d'itérer sur un tableau de tableaux et de décomposer le tableau imbriqué
dans des variables de boucle en utilisant soit
la déstructuration de tableau
via [] ou en utilisant la structure de langage list() comme valeur.
Note:
Il est à noter que
la déstructuration de tableau
via [] n'est possible qu'à partir de PHP 7.1.0
Lorsqu'il y a moins de variables que d'éléments dans le tableau,
les éléments restants seront ignorés.
De même, les éléments peuvent être ignorés en utilisant une virgule :
Une notification sera générée s'il n'y a pas assez d'éléments dans le tableau
pour remplir la fonction list() :
foreach et références
Il est possible de modifier directement les éléments du tableau dans une boucle en précédant
$value de &.
Dans ce cas, la valeur sera assignée par
référence.
Avertissement
La référence à $value du dernier élément du tableau
demeure même après la boucle foreach. Il est recommandé
de détruire ces références en utilisant unset().
Sinon, le comportement suivant se produira :
Exemple #2 Itérer sur les valeurs d'un tableau constant par référence
<?php
foreach ([1, 2, 3, 4] as &$value) {
$value = $value * 2;
}
?>