for ($i = 0; $i < 5; $i++) { ... } exécute le bloc un nombre fixe de fois. Les trois parties sont le départ ($i = 0, exécuté une fois), la condition ($i < 5, vérifiée avant chaque passage) et le pas ($i++, exécuté après chaque passage). La boucle s'arrête dès que la condition est fausse.
$i existe encore après la boucle et contient la valeur qui a rendu la condition fausse (6). PHP n'a pas de portée de bloc pour les variables de boucle.
Parcourir un tableau avec un index
Pour une liste aux clés 0, 1, 2 ..., le compteur sert aussi d'index. Stockez d'abord count() dans une variable pour qu'elle ne soit pas rappelée à chaque passage.
La première partie peut contenir plusieurs expressions séparées par des virgules, et c'est ainsi que $n = count($fruits) n'est calculé qu'une fois. Quand vous n'avez besoin que de chaque valeur (et pas de ses voisines), foreach est plus court et fonctionne aussi sur les tableaux dont les clés ne vont pas de 0 à n - 1.
Compter à rebours et avancer de plus de 1
Le pas peut être n'importe quelle expression : $i-- pour compter à rebours, $i += 2 pour un nombre sur deux, $i *= 2 pour les puissances de deux.
range('a', 'h') construit le tableau ['a', 'b', ... 'h']. Avec range(1, 10) et foreach, vous obtenez le même comptage qu'une boucle for, au prix de la construction préalable de tout le tableau.
break et continue
break termine la boucle tout de suite. continue saute le reste du passage en cours et passe directement au pas puis à la vérification suivante de la condition.
La seconde boucle a une condition vide, ce qui signifie « toujours vrai », donc elle tourne jusqu'au break. Dans des boucles imbriquées, break 2 et continue 2 agissent sur la boucle extérieure, comme le montre l'exemple suivant.
Boucles for imbriquées : une table de multiplication
Une boucle dans une boucle exécute entièrement la boucle intérieure à chaque passage de la boucle extérieure. Ici la sortie est du HTML, donc l'onglet Page affiche un vrai tableau.
Mettez $size à 12 et relancez. La forme for (...): et endfor; est la syntaxe alternative qui garde les boucles lisibles entre des balises HTML. La même table construite en texte brut, avec break 2 pour arrêter les deux boucles :
Erreurs fréquentes : décalage de un et boucle infinie
Les deux bugs classiques de for : utiliser <= avec count() lit un élément au-delà de la fin, ce que PHP signale par Warning: Undefined array key 3 en le traitant comme null ; et un pas qui ne rapproche jamais le compteur de la fin ($i-- au lieu de $i++) laisse la condition vraie pour toujours.
Pour les boucles dont vous ne pouvez pas connaître la longueur à l'avance, comme lire un fichier jusqu'à la fin, une boucle while convient mieux.
Questions fréquentes
Comment parcourir un tableau avec un index en PHP ?
Pour une liste aux clés 0, 1, 2, utilisez for ($i = 0; $i < count($arr); $i++) { echo $arr[$i]; }. Dans la plupart des cas, foreach ($arr as $i => $value) est plus simple, donne le même index et fonctionne aussi quand les clés ne vont pas de 0 à n moins 1.
Comment sortir d'une boucle for en PHP ?
break; quitte la boucle immédiatement. Dans des boucles imbriquées, break 2; quitte la boucle intérieure et celle qui l'entoure. continue; saute le reste du passage en cours et passe au suivant.
Comment faire un compte à rebours avec une boucle for en PHP ?
Partez d'une valeur haute, comparez avec >= et décrémentez : for ($i = 10; $i >= 1; $i--) { echo $i; }. Pour un pas différent de un, modifiez la troisième partie, par exemple $i += 2 ou $i -= 5.
Quand utiliser for plutôt que foreach en PHP ?
Utilisez for quand vous comptez quelque chose (répéter 5 fois, les nombres de 1 à 100, un élément sur deux) ou avez besoin de l'élément suivant ou précédent par son index. Utilisez foreach pour visiter chaque élément d'un tableau, surtout les tableaux associatifs, qui n'ont pas d'index numérique.