What's the difference between ++$i and $i++ in PHP?
++$i
is pre-increment whilst $i++
post-increment.
- pre-increment: increment variable
i
first and then de-reference. - post-increment: de-reference and then increment
i
"Take advantage of the fact that PHP allows you to post-increment ($i++) and pre-increment (++$i). The meaning is the same as long as you are not writing anything like $j = $i++, however pre-incrementing is almost 10% faster, which means that you should switch from post- to pre-incrementing when you have the opportunity, especially in tight loops and especially if you're pedantic about micro-optimisations!" - TuxRadar
For further clarification, post-incrementation in PHP has been documented as storing a temporary variable which attributes to this 10% overhead vs. pre-incrementation.
++$i
increments $i
, but evaluates to the value of $i+1
$i++
increments $i
, but evaluates to the old value of $i
.
Here's an example:
$i = 10;
$a = $i++;
// Now $a is 10, and $i is 11
$i = 10;
$a = ++$i;
// Now $a is 11, and $i is 11
There is sometimes a slight preformance cost for using $i++
. See, when you do something like
$a = $i++;
You're really doing this:
$temporary_variable = $i;
$i=$i+1;
$a=$temporary_variable;
++$i
is pre-incrementation
$i
is incremented- the new value is returned
$i++
is post-incrementation
- the value of
$i
copied to an internal temporary variable $i
is incremented- the internal copy of the old value of
$i
is returned