Manuel PHP
Précédent | Chapitre 16. Les structures de contrôle | Suivant

# `for`

Les boucles `for` sont les boucles les plus complexes en PHP. Elles fonctionnent comme les boucles `for` du langage C. La syntaxe des boucles `for` est la suivante :

Exemple 16-13. Instruction `for`

    for (expr1; expr2; expr3)
      commandes

La première expression (`expr1`) est évaluée (exécutée), quoi qu'il arrive au début de la boucle.

Au début de chaque itération, l'expression `expr2` est évaluée. Si l'évaluation vaut `TRUE`, la boucle continue et l'instruction est exécutée. Si l'évaluation vaut `FALSE`, l'exécution de la boucle s'arrête.

À la fin de chaque itération, l'expression `expr3` est évaluée (exécutée).

Les expressions peuvent éventuellement être laissées vides ou peuvent contenir plusieurs expressions séparées par des virgules. Les expressions séparées par une virgule dans `expr2` sont traitées de la même façon que si elles avaient été séparées par l'opérateur || mais avec une priorité moins élevées. Si l'expression `expr2` est laissée vide, cela signifie que c'est une boucle infinie (PHP considère implicitement qu'elle vaut `TRUE`, comme en C). Cela n'est pas vraiment très utile, à moins que vous souhaitiez terminer votre boucle par l'instruction conditionnelle `break`.

Considérons les exemples suivants. Tous affichent les chiffres de 1 à 10 :

Exemple 16-14. Exemple de boucles

`<?php /* exemple 1 */ for ($i = 1; $i <= 10; $i++) { echo $i; } /* exemple 2 */ for ($i = 1; ; $i++) { if ($i > 10) { break; } echo $i; } /* exemple 3 */ $i = 1; for (; ; ) { if ($i > 10) { break; } echo $i; $i++; } /* exemple 4 */ for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++); ?>`

Bien évidemment, le premier exemple est le plus simple de tous (ou peut être le quatrième), mais vous pouvez aussi pensez qu'utiliser une expression vide dans une boucle `for` peut être utile parfois.

PHP supporte aussi la syntaxe alternative suivante pour les boucles `for` :

Exemple 16-15. Instruction `for` alternative

    for (expr1; expr2; expr3):
      commandes;
      ...;
    endfor;

Précédent | Sommaire | Suivant
`do-while` | Niveau supérieur | `foreach`