do
Le mot-clé "do" en PHP lance une boucle do...while qui s'exécute au moins une fois avant de vérifier la condition. Découvrez la syntaxe et les cas d'usage.
Le mot-clé PHP do
Le mot-clé do démarre une boucle do...while en PHP — une structure de contrôle qui exécute un bloc de code de manière répétée tant qu' une condition reste vraie. Sa caractéristique principale est que la condition est vérifiée en bas de la boucle, de sorte que le corps s'exécute toujours au moins une fois, même si la condition est fausse dès le départ.
Cette page couvre la syntaxe de do...while, en quoi elle diffère d'une boucle while classique, les situations pratiques où elle excelle (validation des entrées, menus, logique de nouvelle tentative), les erreurs courantes à éviter, et comment contrôler la boucle avec break et continue.
Syntaxe
Le mot-clé do se couple avec le mot-clé while. Le corps vient en premier, puis la condition :
La syntaxe PHP de do
<?php
do {
// code to be executed
} while (condition);Deux détails à retenir :
- La condition est évaluée après chaque passage, donc le corps s'exécute une fois avant d'être jamais vérifié.
- Le
while (condition);de fermeture doit se terminer par un point-virgule — contrairement à une bouclewhileclassique, où le point-virgule créerait un bogue.
do...while vs while
La différence réside dans le moment où la condition est testée. Une boucle while classique vérifie la condition avant la première itération, elle peut donc s'exécuter zéro fois. Une boucle do...while vérifie après, elle s'exécute donc au moins une fois.
<?php
$count = 10;
// while: condition false up front → body never runs
while ($count < 5) {
echo "while: $count\n";
}
// do...while: body runs once before the check
do {
echo "do: $count\n"; // prints "do: 10"
} while ($count < 5);Résultat :
do: 10La boucle while n'affiche rien ; la boucle do...while affiche une ligne. Optez pour do...while chaque fois que le corps doit s'exécuter au moins une fois quel que soit l'état initial.
Exemples
Compter et itérer sur un array — notez que PHP_EOL (ou "\n") affiche un saut de ligne, de sorte que chaque valeur apparaît sur sa propre ligne :
Exemples de do en PHP
<?php
// Example 1 — count from 1 to 5
$myNumber = 1;
do {
echo $myNumber . PHP_EOL;
$myNumber++;
} while ($myNumber <= 5);
// Prints 1, 2, 3, 4, 5 each on its own line
// Example 2 — walk through an array
$myArray = ["apple", "banana", "cherry", "date"];
$index = 0;
do {
echo $myArray[$index] . PHP_EOL;
$index++;
} while ($index < count($myArray));
// Prints apple, banana, cherry, date each on its own lineQuand utiliser do...while
La garantie « s'exécute au moins une fois » fait de do...while le choix naturel pour quelques schémas récurrents.
Logique de nouvelle tentative et de validation
Essayer une action une fois, puis continuer à réessayer tant qu'elle échoue :
<?php
$attempts = 0;
do {
$attempts++;
// Simulate: the 3rd attempt finally succeeds
$password = $attempts < 3 ? "wrong" : "secret";
} while ($password !== "secret" && $attempts < 5);
echo "Logged in after $attempts attempts" . PHP_EOL;
// Logged in after 3 attemptsComme la première tentative doit toujours avoir lieu, do...while se lit plus naturellement ici qu'une boucle while avec du code d'initialisation dupliqué.
Boucles de menu
Afficher un menu, lire une entrée, et répéter jusqu'à ce que l'utilisateur choisisse de quitter — le menu doit s'afficher au moins une fois :
<?php
$choice = '';
do {
// show menu, read $choice from input...
// for this example we just stop immediately
$choice = 'q';
} while ($choice !== 'q');
echo "Goodbye\n";Contrôler la boucle : break et continue
Dans le corps d'une boucle do...while, vous pouvez utiliser break pour quitter la boucle prématurément et continue pour passer directement à la vérification de la condition suivante.
<?php
$n = 0;
do {
$n++;
if ($n === 3) {
continue; // skip printing 3, jump to the while check
}
if ($n > 5) {
break; // exit the loop entirely
}
echo $n . PHP_EOL;
} while (true);
// Prints 1, 2, 4, 5Notez que continue saute au test de la condition, pas au début du corps — la boucle réévalue quand même while (true) et continue.
Pièges courants
- Oublier le point-virgule final après
while (condition)provoque une erreur d'analyse. - Boucles infinies : si la condition ne devient jamais fausse (et qu'il n'y a pas de
break), la boucle tourne indéfiniment. Assurez-vous que quelque chose dans le corps modifie les valeurs dont dépend la condition. - Décalage d'un lors de l'indexation des arrays : avec
do...while, le corps s'exécute avant la vérification des limites, donc un array vide peut déclencher une erreur « undefined offset ». Protégez-vous avecif (!empty($arr))ou utilisezforeachpour les arrays.
Boucles associées
PHP propose plusieurs constructions de boucle — choisissez celle qui correspond à votre intention :
while— vérifie la condition avant chaque passage (peut s'exécuter zéro fois).for— une boucle pilotée par un compteur avec init/condition/incrément intégrés.foreach— itère directement sur les arrays et les objects.- Vue d'ensemble des boucles PHP — une comparaison côte à côte des quatre boucles.
Conclusion
La boucle do...while est le bon outil chaque fois qu'un bloc de code doit s'exécuter au moins une fois puis se répéter tant qu'une condition est vraie — la validation des entrées, la logique de nouvelle tentative et les invites de menu en sont des exemples classiques. Pensez au point-virgule final, assurez-vous que la condition peut éventuellement devenir fausse, et utilisez break/continue pour affiner le flux.