PHP foreach : boucler des tableaux clé-valeur

PHP foreach est la manière idiomatique de parcourir un tableau ou un objet qui implémente Traversable sans suivi manuel d’index. Utilisez foreach ($array as $key => $value) quand vous avez besoin de la clé et de la valeur PHP foreach à chaque passage. Pour des mises à jour en place, itérez par référence (&$value) puis appelez unset() sur la variable de boucle pour éviter des écrasements accidentels.

Exemple PHP foreach pour l’itération clé-valeur

Sortie :

La sortie apparaîtra ici...

Sortie :

pomme: $1.2
pain: $2.5
lait: $0.99

Comment cet exemple fonctionne

  1. $prix est un tableau associatif qui mappe des noms de produits à des prix.
  2. foreach ($prix as $article => $prixArticle) assigne la clé actuelle à $article et la valeur actuelle à $prixArticle à chaque passage ; aucun index manuel ni count() n’est nécessaire.
  3. Chaque itération affiche la paire clé-valeur. foreach gère les tableaux indexés et associatifs avec la même syntaxe.

Erreurs courantes avec PHP foreach

Oublier unset() après une boucle par référence

Incorrect :

foreach ($items as &$item) {
    $item = strtoupper($item);
}
foreach ($items as $item) {} // écrase le dernier élément

Correct :

foreach ($items as &$item) {
    $item = strtoupper($item);
}
unset($item);

Après un foreach par référence, la variable de boucle pointe encore vers le dernier élément. Réutiliser cette variable peut provoquer la mutation du dernier élément au lieu de la valeur locale de boucle.

Penser qu’une boucle par valeur modifie le tableau

Incorrect :

foreach ($prices as $price) {
    $price *= 1.10; // modifie une copie, pas le tableau
}

Correct :

foreach ($prices as &$price) {
    $price *= 1.10;
}
unset($price);

L’itération par valeur donne à chaque $price une copie de l’élément. Les modifications de cette copie n’atteignent jamais le tableau d’origine.

PHP foreach vs boucle for

foreachfor
Aucune variable d’index nécessaire ; plus lisible pour un parcours complet.Obligatoire quand vous avez besoin de calculs d’index, d’incréments de pas ou d’un parcours inversé.
Fonctionne avec les tableaux associatifs et les objets Traversable.Fonctionne seulement avec des index numériques ; les clés associatives nécessitent array_keys().
Moins pratique pour un parcours par pas (par exemple, un élément sur deux).Adapté naturellement à $i += 2 ou à un comptage à rebours.

Utilisez foreach pour les parcours standards d’un tableau complet. Passez à for quand le corps de boucle dépend de la position numérique ou d’un accès non séquentiel.

FAQ

Comment obtenir à la fois la clé et la valeur dans une boucle foreach PHP ?

Utilisez la syntaxe $key => $value : foreach ($array as $key => $value). Cela assigne la clé PHP foreach ($key) et la valeur ($value) à chaque itération pour les tableaux indexés et associatifs. Si vous n’avez besoin que des valeurs, utilisez foreach ($array as $value).

foreach peut-il itérer des objets, ou seulement des tableaux ?

foreach fonctionne sur toute valeur qui implémente l’interface Traversable, y compris les implémentations de Iterator et IteratorAggregate. Pour les objets simples, il itère sur les propriétés visibles selon la portée : toutes les propriétés dans la classe, seulement les propriétés public depuis l’extérieur.

Quelle est la différence entre foreach et array_map en PHP ?

foreach est une structure de contrôle qui exécute un bloc pour chaque élément, ce qui autorise des effets de bord comme echo ou un break anticipé. array_map applique un callback et renvoie un nouveau tableau. Utilisez array_map quand vous voulez un nouveau tableau et aucune mutation.