Vous avez déjà sans doute écrit des boucles for en PHP et on vous a toujours appris que la syntaxe était for ($a = 0; $a < 10; $a++) ?
Vous avez déjà sans doute écrit des boucles for
en PHP et on vous a toujours appris que la syntaxe était for ($a = 0; $a < 10; $a++)
? Mais il est préférable de l'écrire plutôt comme cela for ($a = 0; $a < 10; ++$a)
et voici pourquoi.
Derrière la notation $a++
, il se passe deux choses, l'une au niveau de performances et l'autre qui peut poser un problème dans le code. Voici un petit exemple :
$a = 1;
$a++; // $a => 2
++$a; // $a => 3
$a = 1;
$a++; // $a => 2
++$a; // $a => 3
Le comportement reste inchangé, mais dans l'OPCache vous aurez deux variables de créer. L'une qui sera $a
qui contiendra 1
et l'autre qui sera $x
qui contiendra le calcul $a + $a
. Puis il va assigner $x
à $a
pour vous donner le résultat. C'est une performance minime, mais sur une grosse application, cela peut être beaucoup.
L'autre problème est à cause de l'assignation des variables en PHP. Voici un autre exemple :
$a = 1;
$b = $a++; // $a => 2, $b => 1
$b = ++$a; // $a => 3, $b => 3
$a = 1;
$b = $a++; // $a => 2, $b => 1
$b = ++$a; // $a => 3, $b => 3
La raison est simple, quand PHP va affecter la valeur de $a
à $b
ET après il va faire le $a++
. Alors que si l'on fait l'inverse, il va d'abord faire l'addition et après l'affectation de variable. Une bonne chose à savoir pour éviter de s'arracher les cheveux.