I have the following code:
<?php
$a = 1;
$b = 2;
echo "sum: " . $a + $b;
echo "sum: " . ($a + $b);
?>
When I execute my code I get:
2
sum: 3
Why does it fail to print the string "sum:" in the first echo? It seems to be fine when the addition is enclosed in parentheses.
Is this weird behaviour anywhere documented?
Both operators the addition
+operator and the concatenation.operator have the same operator precedence, but since they are left associative they get evaluated like the following:So your first line does the concatenation first and ends up with:
(Now since this is a numeric context your string gets converted to an integer and thus you end up with
0 + 2, which then gives you the result2.)