小编典典

添加和连接时,PHP感到困惑

php

我有以下代码:

<?php

    $a = 1;
    $b = 2;

    echo "sum: " .  $a + $b;
    echo "sum: " . ($a + $b);

?>

当我执行代码时,我得到:

2
sum: 3

为什么"sum:"在第一个回显中无法打印字符串?将加法放在括号中似乎很好。

是否在任何地方都记录了这种怪异的行为?


阅读 215

收藏
2020-05-26

共1个答案

小编典典

这两个运算符的加法+运算符和串联.运算符都具有相同的运算符优先级,但是由于它们保持关联,因此它们的计算方式如下:

echo (("sum:" . $a) + $b);
echo ("sum:" . ($a + $b));

因此,您的第一行首先进行连接,最后得到:

"sum: 1" + 2

(现在,由于这是一个数字上下文,因此您的字符串将转换为整数,因此最终得到0 + 2,然后得到结果2。)

2020-05-26