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 :

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. Dans expr2, toutes les expressions s�par�es par une virgule sont �valu�es mais le r�sultat est obtenu depuis la derni�re partie. 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 jusqu'� 10 :

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

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

Beaucoup de personnes ont l'habitude d'it�rer gr�ce � des tableaux, comme dans l'exemple ci dessous.

<?php
/*
 * Ceci est un tableau avec des donn�es que nous voulons modifier
 * au long de la boucle
*/
$people = Array(
        Array(
'name' => 'Kalle''salt' => 856412),
        Array(
'name' => 'Pierre''salt' => 215863)
        );

for(
$i 0$i sizeof($people); ++$i)
{
    
$people[$i]['salt'] = rand(000000999999);
}
?>

Le probl�me se situe dans le deuxi�me argument de l'expression for. Ce code peut �tre lent parce qu'il doit caclculer la taille du tableau � chaque it�ration. Etant donn� que la taille ne change jamais, il peut facilement �tre optimis� en utilisant une variable interm�diaire pour stocker la taille et en l'utilisant dans la boucle � la place de sizeof. L'exemple ci-dessous illustre ce cas :

<?php
$people 
= Array(
        Array(
'name' => 'Kalle''salt' => 856412),
        Array(
'name' => 'Pierre''salt' => 215863)
        );

for(
$i 0$size sizeof($people); $i $size; ++$i)
{
    
$people[$i]['salt'] = rand(000000999999);
}
?>