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:

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

    <?php
    /* exemple 1 */
    for ($i = 1; $i <= 10; $i++) {
        print $i;
    }
    /* exemple 2 */
    for ($i = 1;;$i++) {
        if ($i > 10) {
            break;
        }
        print $i;
    }
    /* exemple 3 */
    $i = 1;
    for (;;) {
        if ($i > 10) {
            break;
        }
        print $i;
        $i++;
    }
    /* exemple 4 */
    for ($i = 1; $i <= 10; 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` :

    <?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`