W3docs

while

En PHP, le mot-clé "while" crée une boucle qui exécute un bloc de code répétitivement tant qu'une condition est vraie. Découvrez la syntaxe.

La boucle while en PHP

La boucle while est la boucle la plus simple en PHP. Elle exécute un bloc de code encore et encore tant qu'une condition reste vraie, et s'arrête dès que cette condition devient fausse. Utilisez-la lorsque vous ne savez pas à l'avance combien d'itérations seront nécessaires — par exemple, lire des lignes d'une base de données jusqu'à ce qu'il n'en reste plus, ou réessayer une opération jusqu'à ce qu'elle réussisse.

Cette page couvre la syntaxe de while, la forme alternative avec endwhile, la différence entre while et do...while, ainsi que l'erreur la plus courante — la boucle infinie — et comment l'éviter.

Syntaxe

while (condition) {
  // Code to be executed while the condition is true
}

La condition est évaluée avant chaque itération :

  1. PHP vérifie la condition.
  2. Si elle est true, le corps s'exécute une fois, puis PHP revient à l'étape 1.
  3. Si elle est false, la boucle se termine et l'exécution continue après l'accolade fermante.

Puisque la vérification se produit en premier, le corps peut s'exécuter zéro fois — si la condition est déjà fausse lors du premier contrôle, le corps de la boucle est entièrement ignoré.

Syntaxe alternative avec endwhile

PHP propose également une forme avec deux-points et endwhile, pratique lorsque vous mélangez des boucles avec du HTML dans un gabarit :

<?php $i = 1; ?>
<ul>
<?php while ($i <= 3): ?>
  <li>Item <?= $i ?></li>
  <?php $i++; ?>
<?php endwhile; ?>
</ul>

Les deux formes se comportent de manière identique ; choisissez celle qui est la plus lisible dans le contexte.

Utilisation

Le mot-clé while est couramment utilisé en PHP pour créer des boucles qui répètent un bloc de code jusqu'à ce qu'une certaine condition soit satisfaite. Par exemple, vous pourriez utiliser une boucle while pour itérer sur les éléments d'un tableau :

Exemple du mot-clé while en PHP

php— editable, runs on the server

Dans cet exemple, la boucle while est utilisée pour itérer sur les éléments du tableau $myArray. La variable $i sert à suivre l'index courant dans le tableau, et la boucle continue de s'exécuter tant que $i est inférieur au nombre d'éléments du tableau. À l'intérieur de la boucle, nous utilisons l'instruction echo pour afficher l'élément courant du tableau, puis nous incrémentons $i pour passer à l'élément suivant.

Exemples

Voici quelques autres exemples d'utilisation de la boucle while en PHP.

Exemple 1 : Générer un nombre aléatoire jusqu'à ce qu'une condition soit satisfaite

php— editable, runs on the server

Dans cet exemple, nous utilisons une boucle while pour générer des nombres aléatoires jusqu'à obtenir un nombre supérieur ou égal à 10. À l'intérieur de la boucle, nous générons un nombre aléatoire à l'aide de la fonction rand() et l'affichons avec l'instruction echo. Nous continuons à générer des nombres aléatoires et à les afficher jusqu'à obtenir un nombre supérieur ou égal à 10.

Exemple 2 : Itérer sur un ensemble de résultats de base de données

Itérer sur un ensemble de résultats de base de données en PHP

<?php

$query = "SELECT * FROM my_table";
$result = mysqli_query($conn, $query);

while ($row = mysqli_fetch_assoc($result)) {
  echo $row['column_name'] . "<br>";
}

Dans cet exemple, nous utilisons une boucle while pour itérer sur l'ensemble de résultats renvoyé par une requête de base de données. La fonction mysqli_fetch_assoc() retourne la ligne suivante sous forme de tableau associatif, ou false lorsqu'il n'y a plus de lignes — la boucle s'arrête donc automatiquement une fois l'ensemble de résultats épuisé. Cela fonctionne parce que l'affectation $row = mysqli_fetch_assoc($result) est évaluée à la valeur assignée, et false met fin à la boucle.

Éviter la boucle infinie

L'erreur la plus courante avec while est d'oublier de modifier la variable dont dépend la condition. Si la condition ne devient jamais fausse, la boucle s'exécute indéfiniment et bloque votre script :

<?php

$i = 0;

// Bug: $i is never incremented, so $i < 5 stays true forever.
while ($i < 5) {
  echo "running...\n";
  // $i++;  <-- this line is missing
}

Assurez-vous toujours que quelque chose à l'intérieur de la boucle fait évoluer la condition vers false. Vous pouvez également sortir de la boucle prématurément avec break, ou ignorer le reste de l'itération courante avec continue.

while vs do...while

Une boucle while vérifie la condition avant d'exécuter le corps, donc le corps peut s'exécuter zéro fois. Une boucle do...while vérifie la condition après le corps, donc le corps s'exécute toujours au moins une fois :

<?php

$i = 10;

// Condition is false from the start, so this prints nothing.
while ($i < 5) {
  echo "while: $i\n";
  $i++;
}

// do...while runs the body once before checking, so it prints "do-while: 10".
do {
  echo "do-while: $i\n";
  $i++;
} while ($i < 5);

Utilisez do...while lorsque le corps de la boucle doit s'exécuter au moins une fois (par exemple, demander une saisie à un utilisateur jusqu'à ce qu'elle soit valide).

Conclusion

La boucle while exécute un bloc de code tant que sa condition est vraie, en vérifiant cette condition avant chaque passage. Utilisez-la lorsque le nombre d'itérations n'est pas connu à l'avance, protégez-vous contre les boucles infinies en mettant à jour la condition dans le corps, et choisissez do...while lorsque le corps doit s'exécuter au moins une fois.

Pour explorer d'autres façons de répéter du code en PHP, consultez la boucle for (idéale lorsque vous connaissez le nombre d'itérations) et la boucle foreach (idéale pour parcourir des tableaux). Pour une comparaison générale de toutes ces boucles, lisez la présentation des boucles PHP.

Pratique

Pratique
Quelle est la syntaxe d'une boucle 'while' en PHP ?
Quelle est la syntaxe d'une boucle 'while' en PHP ?
Was this page helpful?