Techniques de boucles en PHP : Guide complet
Apprenez les boucles PHP : for, while, do-while et foreach avec des exemples exécutables, break, continue, boucles imbriquées et conseils de choix.
Les boucles vous permettent d'exécuter le même bloc de code encore et encore sans le copier-coller. Au lieu d'écrire dix instructions echo, vous en écrivez une seule et demandez à PHP de la répéter dix fois. Presque tous les programmes réels itèrent sur quelque chose : des lignes d'une base de données, des articles dans un panier, des lignes d'un fichier ou des nombres dans une plage.
PHP vous propose quatre constructions de boucle :
for— lorsque vous savez combien de fois répéter, ou que vous avez besoin d'un compteur.while— répéter tant qu'une condition reste vraie (vous ne savez peut-être pas combien de fois à l'avance).do...while— identique àwhile, mais le corps s'exécute toujours au moins une fois.foreach— la boucle idéale pour parcourir chaque élément d'un tableau.
Cette page couvre la syntaxe de chacune, comment contrôler les boucles avec break et continue, les boucles imbriquées et comment choisir la bonne.
Boucles for
Une boucle for répète un bloc un nombre connu de fois. Son en-tête comporte trois parties séparées par des points-virgules :
for (initializer; condition; update) {
// body
}- L'initialiseur s'exécute une seule fois, avant le début de la boucle — généralement pour initialiser un compteur.
- La condition est vérifiée avant chaque itération. La boucle s'exécute tant qu'elle est
trueet s'arrête dès qu'elle devientfalse. - La mise à jour s'exécute après chaque itération — généralement pour incrémenter le compteur.
Ici $i commence à 0, le corps s'exécute tant que $i < 10, et $i++ ajoute 1 après chaque passage. La boucle affiche The number is 0 jusqu'à The number is 9 — dix lignes. Notez qu'elle s'arrête à 9 et non à 10, car la condition $i < 10 est déjà fausse lorsque $i atteint 10. Les opérateurs relationnels utilisés ici (<, ++) sont expliqués dans les opérateurs PHP.
Boucles while
Une boucle while se répète tant que sa condition est vraie. Utilisez-la lorsque le nombre d'itérations n'est pas fixé à l'avance — par exemple, lire jusqu'à la fin d'un fichier.
Cela affiche les mêmes dix lignes que l'exemple for ci-dessus. La différence est purement stylistique : avec while, vous gérez le compteur vous-même ($i = 0 avant la boucle, $i++ à l'intérieur). Oublier le $i++ ferait rester la condition vraie indéfiniment — une boucle infinie, le bug de boucle le plus courant.
Boucles do-while
Une boucle do...while est comme while, mais elle vérifie la condition après avoir exécuté le corps. Cela signifie que le corps s'exécute toujours au moins une fois, même si la condition est fausse dès le départ.
Cela affiche également 0 à 9. Le comportement « au moins une fois » est utile lorsque la condition dépend de quelque chose que le corps de la boucle produit — par exemple, demander une saisie à l'utilisateur et répéter seulement si la saisie était invalide. Notez le point-virgule après while (...) ; il est obligatoire ici.
Boucles foreach
Une boucle foreach parcourt chaque élément d'un tableau, un à la fois. C'est la façon la plus propre d'itérer sur une collection, car vous n'avez jamais à gérer un index manuellement.
La forme la plus simple vous donne chaque valeur :
À chaque passage, $value contient l'élément suivant, donc cela affiche Red, Green puis Blue.
Pour les tableaux associatifs, utilisez la forme $key => $value pour lire à la fois la clé et la valeur :
Cela affiche Peter is 32, Quagmire is 30 et Joe is 34. foreach préserve l'ordre d'insertion, donc les éléments ressortent dans l'ordre dans lequel vous les avez définis.
Contrôle des boucles : break et continue
Parfois, vous avez besoin d'arrêter une boucle prématurément ou de sauter un seul passage. C'est à cela que servent break et continue, et ils fonctionnent dans tous les types de boucles.
L'instruction break en PHP
L'instruction break arrête immédiatement la boucle et saute au code qui suit.
Lorsque $i atteint 5, break termine la boucle, donc cela n'affiche que Number: 0 à Number: 4.
L'instruction continue en PHP
L'instruction continue saute le reste de l'itération en cours et passe directement à la suivante — la boucle elle-même continue.
Ici continue saute l'itération où $i == 5, donc tous les nombres sauf 5 sont affichés : Number: 0 à Number: 4, puis Number: 6 à Number: 9.
Boucles imbriquées
Vous pouvez placer une boucle à l'intérieur d'une autre. La boucle intérieure s'exécute complètement à chaque passage de la boucle extérieure. C'est ainsi que vous construisez des grilles, des tableaux et des tables de multiplication.
<?php
for ($row = 1; $row <= 3; $row++) {
for ($col = 1; $col <= 3; $col++) {
echo $row * $col . "\t";
}
echo "\n";
}
?>La boucle extérieure s'exécute trois fois (une par ligne) ; pour chaque ligne, la boucle intérieure s'exécute trois fois (une par colonne), affichant une grille de multiplication 3×3. Notez que dans une boucle imbriquée, break et continue n'affectent que la boucle dans laquelle ils se trouvent. Pour sortir de plusieurs niveaux à la fois, vous pouvez passer un nombre : break 2; quitte deux boucles.
Quelle boucle utiliser ?
| Situation | Meilleur choix |
|---|---|
| Vous connaissez le nombre d'itérations ou avez besoin d'un compteur | for |
| Répéter tant qu'une condition est vraie, nombre inconnu | while |
Comme while, mais le corps doit s'exécuter au moins une fois | do...while |
| Traiter chaque élément d'un tableau | foreach |
En cas de doute pour les tableaux, optez pour foreach — c'est le plus lisible et le plus difficile à mal utiliser, car il n'y a pas d'index à gérer et aucun risque de dépassement de bornes.
Conclusion
Les quatre boucles de PHP couvrent tous les schémas de répétition que vous rencontrerez : for pour les boucles comptées, while et do...while pour les boucles conditionnelles, et foreach pour les tableaux. Combinez-les avec break et continue pour contrôler le flux, et imbriquez-les pour travailler avec des grilles et des tableaux. Une fois les boucles naturelles, associez-les aux instructions conditionnelles, à l'instruction switch et aux fonctions pour structurer des programmes complets.