for
(PHP 4, PHP 5, PHP 7, PHP 8)
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 :
La première expression (expr1) est
évaluée (exécutée) une seule fois, sans condition,
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 les commandes sont exécutées. 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 peut être moins inutile qu'il n'y paraît, car il
est souvent souhaitable de terminer la boucle par une instruction
conditionnelle
break
plutôt que d'utiliser l'expression de vérité de la boucle for.
Considérons les exemples suivants. Tous affichent les nombres entiers de
1 à 10 :
Bien évidemment, le premier exemple est le plus simple
de tous (ou peut-être le quatrième), mais il est aussi
possible de penser qu'utiliser une expression vide dans une
boucle for peut être utile parfois.
PHP supporte aussi la syntaxe alternative suivante pour les boucles
for :
Les expressions expr2 et expr3 sont
évaluées à chaque itération. Il est conseillé d'y employer des expressions
simples pour éviter les problèmes de performance. Par exemple, si le nombre
d'itérations est connu à l'avance, il vaut mieux utiliser une variable
plutôt qu'un appel de fonction dans expr2 :
Dans l'exemple ci-dessus, la fonction est appelée à chaque itération de la
première boucle, alors qu'elle retourne toujours la même valeur. Stocker
cette valeur dans une variable, comme le fait la seconde boucle, n'appelle
la fonction qu'une seule fois. Il est à noter que le nombre d'itérations est
alors figé : si le tableau est modifié à l'intérieur de la boucle, la valeur
stockée ne reflète plus sa taille.
Note:
La taille d'un tableau est stockée avec le tableau, ce qui signifie que
l'appel à la fonction native count() ne nécessite pas de
compter les éléments et ne pose pas de problème de performance. Ceci ne
s'applique pas à COUNT_RECURSIVE, qui parcourt tout le
tableau. Il faut également être prudent lors de l'utilisation de
count() sur des objets implémentant
Countable, car de tels appels peuvent être
plus coûteux.
Note:
La boucle for n'est pas la façon recommandée d'itérer sur
des tableaux. La boucle foreach est spécifiquement conçue pour cet usage
et est généralement plus pratique.