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

最佳答案

这是因为字符串串联运算符.具有same precedence作为加/减运算符,并且所有这些运算符都是左关联的。这意味着评估是从左到右进行的,因此首先评估"<br> ADD:".$a,然后将结果添加到3。这个特定的字符串将转换为零,并且0 + 3 =3。对于减法类似。

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

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

另一方面,mul/div的优先级高于连接的优先级,因此它们可以产生预期的结果。

关于php - PHP中的简单算术,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10015494/

10-16 18:18