我有以下代码:
<?php
$a = 1;
$b = 2;
echo "sum: " . $a + $b;
echo "sum: " . ($a + $b);
?>
当我执行我的代码时,我得到:
2
sum: 3
为什么它无法在第一个 echo 中打印字符串 "sum:"
?加法用括号括起来好像没问题。
这种奇怪的行为是否有任何记录?
最佳答案
加法 +
运算符和连接 .
运算符都具有相同的 operator precedence。 ,但由于它们是关联的,因此它们的计算方式如下:
echo (("sum:" . $a) + $b);
echo ("sum:" . ($a + $b));
所以你的第一行首先进行连接,最后是:
"sum: 1" + 2
(因为这是一个数字上下文,你的 string gets converted to an integer 因此你最终得到 0 + 2
,然后给你结果 2
。)
关于PHP 在添加和连接时很困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10841124/