请解释一下为什么我没有得到以下行的整个输出:
echo"$x+$y=".$x+$y."</br>";
Run Code Online (Sandbox Code Playgroud)
我只是在没有字符串打印的情况下获得了添加的打印.但是这个声明的输出是完美的:
echo"$x+$y=".($x+$y)."</br>";
Run Code Online (Sandbox Code Playgroud)
谢谢.
运算符优先级 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',后跟一个或多个数字.
当然,您始终可以使用大括号来强制操作优先级,以获得所需的结果.