This behaviour can be confirmed by inspecting how PHP compiles your script, for example:
$a = 0; echo $a + ++$a;
Compiles into the following opcodes, which are then executed:
compiled vars: !0 = $a line # * op fetch ext return operands --------------------------------------------------------------------------------- 1 0 > ASSIGN !0, 0 1 PRE_INC $1 !0 2 ADD ~2 !0, $1 3 ECHO ~2 4 > RETURN null
This translates to the following equivalent script:
$a = 0; // ASSIGN $tmp = ++$a; // PRE_INC echo $a + $tmp; // ADD, ECHO
Conclusion
By the time $a is evaluated as the left hand expression of $a + (++$a), it has already been incremented, because ++$a was evaluated first.
Obviously, this behaviour should not be relied upon; in any language for that matter.
$l + ++$lto mean, I guarantee that there's a more straightforward way to express that intent.