这是一个简单的php程序,它提供了一个奇怪的输出。任何人都可以解释为什么会这样,以及如何获得预期的输出?
<?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;
?>
输出:
3-3
MUL:6
DIV:0.66666666666667
预期产出:
ADD:5
SUB:-1
MUL:6
DIV:0.66666666666667
答案 0 :(得分:12)
这是因为字符串连接运算符.
具有same precedence作为add / sub运算符,并且它们都是左关联的。这意味着评估从左到右进行,因此首先评估"<br> ADD:".$a
,并将结果添加到3
。此特定字符串转换为零,0 + 3 = 3.相似的减法。
解决方案:将算术放在括号中。
echo "<br> ADD:".($a+$b);
echo "<br> SUB:".($a-$b);
另一方面,mul / div的优先级高于连接,因此它们会产生预期的结果。