揭开 PHP 的歧义:串联和加法的奇怪案例
当加法和串联时,PHP 的运算符优先级和关联性可能会导致意外结果运营商参与其中。考虑这段代码:
<code class="php">$a = 1; $b = 2; echo "sum: " . $a + $b; // Output: 2 echo "sum: " . ($a + $b); // Output: sum: 3</code>
为什么会出现差异?这一切都取决于 PHP 的运算符求值顺序。
加法 ( ) 和连接 (.) 运算符具有相同的优先级,但它们是左关联的。这意味着,当 PHP 遇到涉及多个具有相同优先级的运算符的表达式时,它首先计算最左边的运算符,然后向右计算。
在第一个 echo 语句中,连接运算符 (.) 首先计算,结果如下:
"sum: 1" + 2
然后将字符串“sum: 1”转换为数值 (0) 并添加到 $b (2),生成2.
的输出在第二个 echo 语句中,括号强制加法运算符首先计算:
($a + $b) . "sum:"
然后将结果与字符串“sum:”连接,产生所需的输出“sum:3”。
此行为记录在 PHP 关于运算符优先级的文档中。它指出“具有相同优先级的运算符从左到右计算,即先 ,然后 .,然后 -。”
以上是为什么 PHP 的串联和加法会导致意外结果?的详细内容。更多信息请关注PHP中文网其他相关文章!