PHP 的冲突运算符:加法和串联
在 PHP 中,当尝试组合加法和串联操作时,会出现一个有趣的现象。让我们用一个例子来探索这个奇怪的行为:
<code class="php">$a = 1; $b = 2; echo "sum: " . $a + $b; echo "sum: " . ($a + $b);</code>
不出所料,第二行打印“sum:3”。但是,第一行意外地显示“2”而不是“sum:2”。为什么会出现这种情况?
左结合运算符具有相同的优先级
关键在于PHP中运算符的优先级和结合性。加法 ( ) 和串联 (.) 运算符具有相同的优先级。因此,它们是从左到右计算的。
在我们代码的第一行,连接 (.) 运算符首先出现:
<code class="php">"sum: " . $a + $b</code>
然后将结果添加到 $b 。所以,我们得到的是:
<code class="php">echo "sum: 1" + 2;</code>
由于这是一个数字上下文,因此“sum: 1”被转换为整数。这样我们就得到 0 2,结果是 2。
当第二行引入括号时,加法运算符优先。它首先计算括号内的表达式,得到 3,然后与“sum:”连接以生成正确的输出:“sum: 3”。
记录 PHP 运算符的怪癖
PHP 文档中对于连接和算术运算符明确说明了这种特殊行为,强调了结合性的重要性当处理相同优先级的运算符时。对于 PHP 开发人员来说,了解这些细微差别至关重要,以避免代码中出现潜在的混乱。
以上是为什么 \"sum: \" 。 PHP 中的 $a $b 输出 2?的详细内容。更多信息请关注PHP中文网其他相关文章!