Le 11/08/2022 à 15:42, Didier a écrit :
> Bonjour,
> Est-il possible d'incrémenter la variable d'une boucle for autrement que
> de 1 ?
Oui.
> Je voudrais un truc du genre :
> $intervalle=20;
> for($i=0;$i<100;$i+intervalle)
for($i=0;$i<100;$i+=intervalle)
Soit dit en passant, je préfère pour ma part du code plus aéré :
for ($i = 0; $i < 100; $i += intervalle)
> Je me heurte à une erreur :
> Allowed memory size of 134217728 bytes exhausted (tried to allocate
> 100663304 bytes)
C'est normal si tu fais des allocations dans ta boucle.
Avec $i = 0 qui n'est jamais incrémenté, la valeur de ($i + intervalle)
est égale à intervalle à chaque tour de boucle, cela fait donc une
boucle infinie.
> (je ne sais pas si c'est directement lié à mon incrément).
Donc non. Tu ne fais aucun incrément, et le problème d'allocation doit
avoir lieu quelque part dans la boucle.
> Sur Internet, on ne voit que des exemples de type $i++
En effet, il est dommage que sur cette page ils ne parlent pas de la
possibilité d'incrémenter ou décrémenter d'une valeur autre que 1 :
https://www.php.net/manual/fr/language.operators.increment.php
C'est dans les opérateurs d'affectation que l'on voit la syntaxe
$a += $b :
https://www.php.net/manual/fr/language.operators.assignment.php
Note que c'est une syntaxe raccourcie, et que l'affectation normale
conviendrait tout aussi bien, à savoir :
$a = $a + 1 au lieu de $a++
$a = $a - 1 au lieu de $a--
$a = $a + 2 au lieu de $a += 2
et ainsi de suite.
Pour en revenir à ton exemple, tu pouvais donc écrire :
for ($i = 0; $i < 100; $i = $i + intervalle)
--
Olivier Miakinen