W3docs

PHP en boucle : comprendre la boucle Foreach

La boucle foreach est un outil puissant pour les développeurs PHP. Elle permet d'itérer facilement sur des arrays et des objects en PHP.

La boucle foreach est le moyen le plus pratique d'itérer sur des arrays et des objects en PHP. Contrairement à la boucle for, elle ne nécessite ni compteur ni calcul de longueur — elle parcourt simplement chaque élément dans l'ordre. Ce guide couvre sa syntaxe, la lecture des clés et des valeurs, la modification des éléments par référence, les boucles imbriquées et les pièges courants qui font trébucher les débutants.

Qu'est-ce que la boucle Foreach ?

La boucle foreach est une boucle conçue spécifiquement pour les arrays et les objects. Elle parcourt une collection et vous remet chaque élément un par un, sans avoir à gérer de variable d'index ni à risquer de dépasser les bornes. Elle est donc idéale pour les arrays indexés, les arrays associatifs et les objects itérables.

Elle se présente sous deux formes :

  • foreach ($array as $value) — lorsque vous n'avez besoin que de chaque valeur.
  • foreach ($array as $key => $value) — lorsque vous avez également besoin de chaque clé.

Si vous avez besoin d'un compteur, d'un pas différent de 1, ou de boucler un nombre fixe de fois indépendamment d'un array, utilisez plutôt une boucle for ou while. Consultez PHP Loops pour un aperçu de tous les types de boucles.

Syntaxe de la boucle Foreach

La syntaxe de la boucle foreach est simple et directe. Elle est composée du mot-clé foreach, suivi d'une paire de parenthèses définissant l'array ou l'object à parcourir. À l'intérieur des parenthèses, vous définissez une variable qui contiendra la valeur de chaque élément au fil des itérations.

Voici un exemple de syntaxe pour la boucle foreach :

Syntaxe PHP de la boucle Foreach

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

Dans cet exemple, $array est l'array ou l'object que vous souhaitez parcourir, et $value est la variable qui contient la valeur de chaque élément au fil des itérations.

Pour les arrays associatifs ou les objects où vous avez besoin à la fois de la clé et de la valeur, vous pouvez utiliser l'opérateur => :

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

Boucler avec les clés et les valeurs

Lorsqu'un array associe des clés à des valeurs, la forme $key => $value vous donne les deux simultanément :

<?php

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

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

Cela affiche :

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

Modifier les éléments d'un array par référence

Par défaut, foreach copie chaque valeur, donc assigner la variable de boucle ne modifie pas l'array d'origine. Préfixez la valeur avec & pour itérer par référence et modifier les éléments en place :

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

Cela affiche :

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

Attention : effectuez toujours un unset($price) après une boucle par référence. La variable continue de pointer vers le dernier élément, et la réutiliser dans une boucle ultérieure corrompt silencieusement vos données — l'un des bugs PHP les plus courants.

Utilisation de la boucle Foreach

La boucle foreach est utilisée pour parcourir des arrays et des objects. Elle vous permet d'accéder à chaque élément de l'array ou de l'object un par un, et d'effectuer une action spécifique pour chaque élément. Par exemple, vous pourriez utiliser la boucle foreach pour afficher tous les éléments d'un array, ou pour effectuer un calcul sur chaque élément d'un object.

Voici un exemple d'utilisation de la boucle foreach en PHP :

Utilisation PHP de la boucle Foreach

php— editable, runs on the server

Dans cet exemple, nous avons créé un array de couleurs, puis utilisé la boucle foreach pour afficher chaque couleur. La boucle itère sur les éléments de l'array $colors, et à chaque itération, la valeur de l'élément courant est assignée à la variable $color.

Exemples de la boucle Foreach

La boucle foreach est un outil flexible qui peut être utilisé de nombreuses façons. Voici quelques exemples d'utilisation de la boucle foreach dans votre code PHP :

  • Afficher les éléments d'un array :

PHP : afficher les éléments d'un array avec la boucle foreach

php— editable, runs on the server
  • Calculer la somme d'un array :

PHP : calculer la somme d'un array avec la boucle foreach

php— editable, runs on the server
  • Accéder aux propriétés d'un object :

PHP : accéder aux propriétés d'un object dans une boucle 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>";
}

?>

Dans cet exemple, nous avons créé une classe Person avec deux propriétés, name et age. Nous avons ensuite créé un array d'objects Person, et utilisé la boucle foreach pour accéder aux propriétés de chaque object Person. La boucle itère sur les éléments de l'array $people, et à chaque itération, la valeur de l'object Person courant est assignée à la variable $person. Nous utilisons ensuite l'opérateur -> pour accéder aux propriétés de l'object Person.

Boucles Foreach imbriquées

Pour parcourir un array multidimensionnel, imbriquez un foreach dans un autre. La boucle externe parcourt les lignes, et la boucle interne parcourt les colonnes de chaque ligne :

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

Cela affiche :

1 2 3
4 5 6

Contrôler la boucle avec break et continue

À l'intérieur d'un foreach, vous pouvez utiliser break pour arrêter la boucle prématurément et continue pour passer à l'élément suivant :

<?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 . " ";
}

Cela affiche :

2 4

Les nombres impairs 1, 3 et 5 sont ignorés par continue ; 2 et 4 sont affichés ; et lorsque la boucle atteint le nombre pair 6 (supérieur à 4), break l'arrête complètement.

Conclusion

La boucle foreach est un outil indispensable pour les développeurs PHP. Elle offre un moyen pratique et simple d'itérer sur des arrays et des objects, vous permettant d'accéder à chaque élément et d'effectuer des actions dessus. Que vous affichiez les éléments d'un array, calculiez des sommes ou accédiez aux propriétés d'objects, la boucle foreach est un outil polyvalent utilisable de multiples façons.

Alors pourquoi ne pas essayer la boucle foreach dans votre code PHP dès aujourd'hui, et voir comment elle peut simplifier et optimiser votre processus de développement ?

Pratique

Pratique
Que fait la boucle 'foreach' en PHP ?
Que fait la boucle 'foreach' en PHP ?
Was this page helpful?