# Boucle foreach

> Structure de contrôle PHP qui parcourt chaque élément d'un tableau ou d'un objet itérable, sans avoir à gérer manuellement un compteur d'index.

- Auteur : Clément Hadrot
- Publié le : 2026-09-25
- Mis à jour le : 2026-09-25
- URL : https://wpmoderne.dev.wordpress-developpement.fr/lexique/boucle-foreach/

Parcourir un tas de cartes une par une, sans avoir à compter combien il y en a ni à se soucier de leur ordre exact de rangement : c'est ce que fait `foreach`, en offrant à chaque tour de boucle l'élément suivant du tableau parcouru.

## La boucle reine dans les templates WordPress

Afficher une liste d'articles, les termes d'une taxonomie ou les champs d'un formulaire personnalisé passe presque toujours par une boucle `foreach` dans un template WordPress, souvent en complément de la boucle principale `WP_Query` qui utilise plutôt `while ( have_posts() )`.

## Exemple

```
$categories = get_the_category();

foreach ($categories as $categorie) {
    echo '<a href="' . esc_url(get_category_link($categorie->term_id)) . '">'
       . esc_html($categorie->name) . '</a> ';
}
```

Chaque tour de boucle reçoit un objet catégorie différent, sans qu'il soit nécessaire de gérer un index numérique pour y accéder.

## Bon à savoir

- La syntaxe `foreach ($tableau as $cle => $valeur)` donne accès à la fois à la clé et à la valeur, indispensable pour parcourir un tableau associatif.
- Modifier le tableau parcouru pendant l'exécution d'un `foreach` peut produire un comportement inattendu ; utiliser une référence (`as &$valeur`) exige de penser à faire un `unset()` après la boucle pour éviter des effets de bord.
- Contrairement à `for`, `foreach` ne nécessite pas de connaître à l'avance le nombre d'éléments à parcourir, ce qui le rend plus sûr face à des tableaux de taille variable.
