5

这是一个简单的 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
4

1 回答 1

12

这是因为字符串连接运算符与加/减运算符.具有相同的优先级,并且它们都是左关联的。这意味着评估从左到右进行,因此"<br> ADD:".$a首先评估并将结果添加到3. 这个特定的字符串转换为零和 0 + 3 = 3。减法类似。

解决方案:将算术放在括号中。

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

另一方面,mul/div 的优先级高于串联,因此它们会产生预期的结果。

于 2012-04-04T16:37:21.263 回答