W3docs

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
}
  1. L'initialiseur s'exécute une seule fois, avant le début de la boucle — généralement pour initialiser un compteur.
  2. La condition est vérifiée avant chaque itération. La boucle s'exécute tant qu'elle est true et s'arrête dès qu'elle devient false.
  3. La mise à jour s'exécute après chaque itération — généralement pour incrémenter le compteur.
php— editable, runs on the server

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.

php— editable, runs on the server

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.

php— editable, runs on the server

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 :

php— editable, runs on the server

À 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 :

php— editable, runs on the server

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.

php— editable, runs on the server

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.

php— editable, runs on the server

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 ?

SituationMeilleur choix
Vous connaissez le nombre d'itérations ou avez besoin d'un compteurfor
Répéter tant qu'une condition est vraie, nombre inconnuwhile
Comme while, mais le corps doit s'exécuter au moins une foisdo...while
Traiter chaque élément d'un tableauforeach

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.

Pratique

Pratique
Lesquels des types de boucle suivants sont valides en PHP ?
Lesquels des types de boucle suivants sont valides en PHP ?
Was this page helpful?