endforeach
Le mot-clé "endforeach" est une structure de contrôle PHP qui marque la fin d'une boucle "foreach". Syntaxe, exemples et erreurs courantes.
Le mot-clé PHP endforeach
endforeach est le mot-clé de fermeture de la syntaxe alternative PHP pour la boucle foreach. Au lieu d'encadrer le corps de la boucle avec des accolades, vous ouvrez le bloc avec un deux-points (:) et vous le fermez avec endforeach;. Le comportement est identique à la version avec accolades — seule la ponctuation change.
Cette page couvre la syntaxe, les cas d'utilisation, des exemples concrets et les pièges courants (mélange de syntaxes, références) qui surprennent souvent les développeurs.
Syntaxe
Vous remplacez le { d'ouverture par : et le } de fermeture par endforeach; :
foreach ($array as $value):
// code to be executed
endforeach;Cela fonctionne aussi avec la forme clé/valeur :
foreach ($array as $key => $value):
// code to be executed
endforeach;Les deux sont fonctionnellement identiques à la syntaxe standard avec accolades :
foreach ($array as $value) {
// code to be executed
}Quand l'utiliser
La syntaxe alternative existe principalement pour les templates — des fichiers qui mélangent PHP et HTML. Un } de fermeture peut être difficile à associer à son accolade ouvrante quand il y a du HTML entre les deux, alors que endforeach; est explicite et auto-documenté :
<ul>
<?php foreach ($products as $product): ?>
<li><?= htmlspecialchars($product) ?></li>
<?php endforeach; ?>
</ul>Dans du code PHP pur (sans HTML incorporé), la plupart des équipes préfèrent la syntaxe avec accolades. Choisissez un style par fichier et restez cohérent.
Exemples
Exemples de endforeach en PHP
<?php
// Example 1
$array = ["apple", "banana", "cherry"];
foreach ($array as $value):
echo $value . PHP_EOL;
endforeach;
// Output:
// apple
// banana
// cherry
// Example 2
$array = ["a" => "apple", "b" => "banana", "c" => "cherry"];
foreach ($array as $key => $value):
echo $key . " = " . $value . PHP_EOL;
endforeach;
// Output:
// a = apple
// b = banana
// c = cherryL'exemple 1 itère sur une liste simple et affiche chaque valeur ; l'exemple 2 itère sur un array associatif en capturant à la fois la $key et la $value.
Erreurs courantes
Ne mélangez pas les deux syntaxes. Si vous ouvrez avec :, vous devez fermer avec endforeach; — et si vous ouvrez avec {, vous devez fermer avec }. Mélanger les deux provoque une erreur d'analyse :
// Parse error: this is invalid
foreach ($array as $value): // opens with a colon
echo $value;
} // ...but tries to close with a braceN'oubliez pas le point-virgule. C'est endforeach;, pas endforeach. Oublier le point-virgule est une faute de frappe courante qui déclenche une erreur de syntaxe.
Le piège des références s'applique ici aussi. Comme avec tout foreach, si vous itérez par référence (as &$value), la variable $value pointe toujours vers le dernier élément après la fin de la boucle. Utilisez toujours unset($value) ensuite pour éviter des bugs surprenants :
$array = [1, 2, 3];
foreach ($array as &$value):
$value *= 2;
endforeach;
unset($value); // break the reference
print_r($array);
// Output:
// Array ( [0] => 2 [1] => 4 [2] => 6 )Mots-clés de syntaxe alternative associés
endforeach fait partie d'une famille de terminateurs de syntaxe alternative. Chaque boucle et structure conditionnelle possède le sien :
Pour la boucle elle-même, consultez le chapitre complet sur la boucle foreach.
Conclusion
endforeach ferme la forme avec deux-points d'une boucle foreach. Utilisez-le dans les templates où PHP et HTML sont imbriqués, maintenez une syntaxe cohérente au sein d'un bloc, et n'oubliez pas le point-virgule final.