没有括号没有得到具体的输出

Tec*_*ani 0 php echo quote

请解释一下为什么我没有得到以下行的整个输出:

echo"$x+$y=".$x+$y."</br>";
Run Code Online (Sandbox Code Playgroud)

我只是在没有字符串打印的情况下获得了添加的打印.但是这个声明的输出是完美的:

echo"$x+$y=".($x+$y)."</br>";
Run Code Online (Sandbox Code Playgroud)

谢谢.

Fab*_*tté 5

运算符优先级 101 +.运营商具有相同的优先级,由左到右结合,所以没有括号从左至右的操作进行评估.

考虑一下我从你的问题代码中改编的这个例子:

$x = 3;
$y = 5;
echo "$x+$y=" . $x + $y;
Run Code Online (Sandbox Code Playgroud)

双引号内的变量名称将被扩展(也称为字符串插值),因此它的计算方法如下:

echo "3+5=" . 3 + 5;
echo ("3+5=" . 3) + 5; //added braces to demonstrate actual operations order
echo "3+5=3" + 5;
echo 3 + 5; //string evaluated in numeric context is coerced to number¹
echo 8;
Run Code Online (Sandbox Code Playgroud)

在问题的原始代码中,还有一个字符串连接,它将这个结果与另一个字符串连接起来就是这样.

¹来自PHP文档:

该值由字符串的初始部分给出.如果字符串以有效数字数据开头,则这将是使用的值.否则,该值将为0(零).有效数字数据是可选符号,后跟一个或多个数字(可选地包含小数点),后跟可选指数.指数是'e'或'E',后跟一个或多个数字.

当然,您始终可以使用大括号来强制操作优先级,以获得所需的结果.