Dans le langage PHP, il existe la structure foreach (traduite en français par “pour chaque”) qui est bien pratique pour parcourir les tableaux et les objets à la place de la boucle for ou de la boucle while.
Nous allons voir comment utiliser cette structure dans votre code PHP, pour des cas simples d’abord, puis pour des cas plus complexes.

Pré-requis

  • Vous connaissez les bases de la syntaxe PHP
  • Vous avez PHP d’installé sur un ordinateur, auquel vous avez accès

Partie 1 – Maîtriser la syntaxe de foreach

Ici, nous allons utiliser foreach simplement pour parcourir un tableau de chaînes de caractères.

Création d’un tableau

Nous commençons par créer un tableau contenant en toutes lettres les nombres “un” à “cinq”, appelé tableau_1 puis nous affichons son contenu avec la fonction print_r() :

$tableau_1 = [
    'un',
    'deux',
    'trois',
    'quatre',
    'cinq'
];
print_r ($tableau_1);

Cela vous générera l’output suivant :

Array
(
    [0] => un
    [1] => deux
    [2] => trois
    [3] => quatre
    [4] => cinq
)

Note : n’oubliez pas que le premier élément est l’élément numéro 0 en PHP.

Parcours des valeurs du tableau

Nous allons maintenant utiliser la fonction foreach sur notre tableau pour en afficher les valeurs une par une avec la fonction echo. La syntaxe à utiliser est la suivante :

foreach ($tableau_1 as $valeur) {
    echo ($valeur . "\n");
}

Cela permettra d’obtenir le résultat suivant :

un
deux
trois
quatre
cinq

Parcours des clés et des valeurs du tableau

À présent, nous allons utiliser la fonction foreach sur notre tableau pour afficher une à une ses clés et ses les valeurs avec la fonction echo. La syntaxe à utiliser est la suivante :

foreach ($tableau_1 as $cle => $valeur) {
    echo 'La clé ' . $cle . ' contient la valeur ' . $valeur . "\n";
}

Cela vous permettra d’obtenir le résultat suivant :

La clé 0 contient la valeur un
La clé 1 contient la valeur deux
La clé 2 contient la valeur trois
La clé 3 contient la valeur quatre
La clé 4 contient la valeur cinq

Partie 2 – Travailler sur les valeurs

Dans les versions modernes de PHP (5.5 et plus récentes), on peut déclarer un tableau directement dans le foreach.
Pour aller plus loin dans la syntaxe, nous allons afficher l’ensemble des carrés et des cubes de 1 à 10 à partir du tableau [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], de l’opérateur “puissance” ** et de la fonction echo :

foreach ([1, 2, 3, 4, 5, 6, 7, 8, 9, 10] as $valeur) {
    echo $valeur . ' a pour carré ' .
        ($valeur**2) . ' et pour cube ' .
        ($valeur**3) . ".\n";
}

Vous obtiendrez le résultat suivant :

1 a pour carré 1 et pour cube 1.
2 a pour carré 4 et pour cube 8.
3 a pour carré 9 et pour cube 27.
4 a pour carré 16 et pour cube 64.
5 a pour carré 25 et pour cube 125.
6 a pour carré 36 et pour cube 216.
7 a pour carré 49 et pour cube 343.
8 a pour carré 64 et pour cube 512.
9 a pour carré 81 et pour cube 729.
10 a pour carré 100 et pour cube 1000.

Partie 3 – Passer aux tableaux multidimensionnels

Comme elle fait partie du langage PHP, la structure foreach peut être imbriquée dans une autre structure, par exemple un autre foreach. Pour afficher un à un les éléments d’un tableau à deux dimensions, il est donc possible de faire comme ceci :

$tableau_3 = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
];
foreach ($tableau_3 as $cle_1 => $valeur_1) {
    foreach ($valeur_1 as $cle_2 => $valeur_2) {
        echo '[' . $cle_1 . ', ' . $cle_2 . '] = ' . $valeur_2 . "\n";
    }
    echo "----------\n";
}

Cela affichera le résultat suivant :

[0, 0] = 1
[0, 1] = 2
[0, 2] = 3
----------
[1, 0] = 4
[1, 1] = 5
[1, 2] = 6
----------
[2, 0] = 7
[2, 1] = 8
[2, 2] = 9
----------

Un autre aspect intéressant des tableaux à 2 dimensions ou plus est la possibilité d’extraire les tableaux internes avec la fonction list() dans plusieurs variables. Par exemple, pour le tableau déclaré précédemment, on peut utiliser :

$tableau_3 = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
];
foreach ($tableau_3 as list($v1, $v2, $v3)) {
    echo $v1 . ', ' . $v2 . ', ' . $v3 . "\n";
}

Cela affichera :

1, 2, 3
4, 5, 6
7, 8, 9

Partie 4 – Sortir de la boucle à mi-parcours

Pour la structure foreach ainsi que pour d’autres structures de boucle, il est possible de s’arrêter à mi-parcours, grâce à la structure de contrôle break.
Par exemple, nous avons 12 grands nombres, on veut sortir de la boucle dès qu’on en a trouvé un qui est un multiple de 7. On pourra réaliser cela comme dans l’exemple suivant :

$tableau_4 = [
	831032,
	826041,
	353115,
	679456,
	198498,
	494414,
	300126,
	722289,
	867060,
	690871,
	507247,
	349264
];
foreach ($tableau_4 as $cle => $valeur) {
	if ($valeur % 7 === 0) {
		echo $valeur . ' est divisible par 7 !';
		break;
	}
}

Cela nous donnera le résultat suivant :

353115 est divisible par 7 !

Ainsi, comme il s’agit du troisième élément du tableau, on ne l’aura pas parcouru en entier.

Partie 5 – Travailler avec les références

Dans les exemples précédents, nous avons travaillé avec des tableaux sans les modifier à l’intérieur du foreach. Pour pouvoir faire cela, il est nécessaire d’utiliser des références, qui permettront de travailler directement sur les valeurs du tableau. Une référence se déclare avec le mot-clé &.
Par exemple, si on veut multiplier par 2 chaque nombre d’un tableau dans un foreach, on fera comme suit :

$tableau_5 = [1, 2, 3, 4];
foreach ($tableau_5 as &$valeur) {
$valeur = $valeur * 2;
}
unset($valeur); // Cela détruit la référence, pour pouvoir réutiliser plus
                // tard le nom de variable "$valeur" sans problème.

Notre tableau vaudra bien [2, 4, 6, 8] à la fin de l’opération.


Bonus : utiliser la boucle Foreach

Et parce qu’on est sympa on vous propose une petite vidéo explicative qui vous résume l’utilisation de la boucle Foreach 😋

D’ailleurs, si vous souhaitez devenir incollable en PHP, jetez un œil à cette formation complète.

> PHP : Formation complète

(13548)