Manuel PHP
Précédent | Chapitre 11. 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 11-13. Instruction for()

`<?php for (expr1; expr2; expr3) statement ?>`

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.

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

Les expressions peuvent éventuellement être laissées vides. 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 11-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; $i <= 10; echo $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 11-15. Instruction for() alternative

`<?php for (expr1; expr2; expr3): statement; ...; endfor; ?>`

Les autres langages ont l'instruction `foreach` pour accéder aux éléments d'un tableau. `PHP` 3 ne dispose pas d'une telle fonction; `PHP` 4 en dispose (voir foreach). En `PHP` 3, vous pouvez combiner while avec list() et each() pour obtenir le même résultat. Reportez-vous aux exemples de la documentation.

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