Simple arithmetic in PHP

php

Solution

It is because the string concatenation operator `.` has the same precedence as the add/sub operators, and all of them are left-associative. This means that evaluation proceeds left-to-right, so `"<br> ADD:".$a` is evaluated first and the result is added to `3`. This particular string converts to zero and 0 + 3 = 3. Similar for the subtraction.

Solution: put the arithmetic in parentheses.

echo "<br> ADD:".($a+$b);
echo "<br> SUB:".($a-$b);

On the other hand, mul/div have higher precedence than concatenation so they produce the expected result.

Problem

Here is a simple php program which gives a strange output. Can anyone explain why it is coming like this and how to get the expected output? ``` <?php $a=2;$b=3; echo "<br> ADD:".$a+$b; echo "<br> SUB:".$a-$b; echo "<br> MUL:".$a*$b; echo "<br> DIV:".$a/$b; ?> ``` Output: ``` 3-3 MUL:6 DIV:0.66666666666667 ``` Expected Output: ``` ADD:5 SUB:-1 MUL:6 DIV:0.66666666666667 ```

Original source