Why $x=5; $x+++$x++; equals with 11 in PHP?

✔ Recommended Answer

It took me a few reads, but $x=5; $x++ + $x++; works like this:

In the case of a $x++, it first 'gets used', then increased:

  • $x=5; — Set $x to 5
  • $x++ + ... — Use, then increment
    • Place $x onto formulae stack (which is 5)
    • Increment(++) ($x is now 6, stack=[5])
  • ... + $x++; — Use, then increment
    • Add $x onto stack (stack=[5,6], so 5+6 -> $x=11)
    • Adding is done, that outcome is 11
    • Increment $x(++) (which is isn't used further, but $x is now 7)

Actually, in this specific example, if you would echo $x;it would output 7. You never reassign the value back to $x, so $x=7 (you incremented it twice);

Source: stackoverflow.com

Answered By: Martijn

Method #2

In PHP, the operator precedence determines the order in which operators are evaluated in an expression. In the expression $x++ + $x++, the post-increment operator ($x++) has a higher precedence than the addition operator (+), so it is evaluated first.

The first time $x++ is encountered, the value of $x is 5, but the post-increment operator increments the value of $x to 6 and returns the original value (5). The second time $x++ is encountered, the value of $x is now 6, but the post-increment operator again increments the value of $x to 7 and returns the original value (6).

So, the expression $x++ + $x++ is effectively evaluated as 5 + 6, which equals 11. That's why $x will have the value of 7 after this expression is evaluated.


Most Popular

PhpStorm, return value is expected to be 'A', 'object' returned

Remove Unicode Zero Width Space PHP

Laravel file upload returns forbidden 403, file permission is 700 not 755