Next Oct 21 Previous1 + 1 on steroids
Consider the following two lines of code. What will it display in your browser?
<?php
$i = 1;
echo $i++ + ++$i;
?>
A: 2
B: 3
C: 4
D: 5
Answer
Obviously this is a very bad piece of code but nevertheless let's take a good look at it. On line tree we'll find a post-increment, an addition and a pre-increment. Now how are the executed?
The operands of the addition are evaluated from left to right and the increment operation has a higher precedence than the addition operator. This means that $i++
will be evaluated first and what happens there is that because of the post-increment the value of 1 will be set aside for the addition and then $i
is incremented.
Then the right side (++$i
) of the addition operand will be evaluated. $i
now has the value of 2 and because this is a pre-increment the value will be incremented to 3 before it is set apart for the addition.
So at the time the addition itself is evaluated its left operand has the value of 1 and the right one has the value of 3. So 4 (answer C) will be echoed to your browser.