Quelle est la différence entre ++$i
et $i++
en PHP?
Réponses
Trop de publicités?++$i
est pré-incrémentation, tout en $i++
post-incrémentation.
- pré-incrémentation: incrémenter la variable
i
d'abord, puis de référence. - la post-incrémentation: de référence et puis incrémenter
i
"Profiter du fait que PHP vous permet de post-incrémentation ($i++) et la pré-incrémentation (++$i). Le sens est la même aussi longtemps que vous n'êtes pas écrit quelque chose comme $j = $i++, cependant pré-incrémentation est de près de 10% plus rapide, ce qui signifie que vous devriez commutateur de post - pré-incrémentation lorsque vous avez la possibilité, en particulier dans les boucles serrées et surtout si vous êtes pointilleux sur micro-optimisations!" - TuxRadar
Pour plus de précisions, post-incrémentation en PHP a été documenté que le stockage d'une variable temporaire qui attribue à ce 10% de frais généraux vs pré-incrémentation.
++$i
par incréments $i
, mais évalue à la valeur de $i+1
$i++
par incréments $i
, mais renvoie l'ancienne valeur de $i
.
Voici un exemple:
$i = 10;
$a = $i++;
// Now $a is 10, and $i is 11
$i = 10;
$a = ++$i;
// Now $a is 11, and $i is 11
Il y a parfois une légère performance coût d'utilisation $i++
. Vous voyez, quand vous faites quelque chose comme
$a = $i++;
Vous êtes vraiment en train de faire ceci:
$temporary_variable = $i;
$i=$i+1;
$a=$temporary_variable;
dans ce cas, il n'y a pas de différence:
for($i = 0;$i<3;++$i)var_dump $i;
/*
int(0)
int(1)
int(2)
*/
for($i = 0;$i<3;$i++)var_dump $i;
/*
int(0)
int(1)
int(2)
*/
mais:
for($i = 0;$i<3; $j = ++$i )var_dump($j);
/*
NULL
int(1)
int(2)
*/
for($i = 0;$i<3; $j = $i++ )var_dump($j);
/*
NULL
int(0)
int(1)
*/