看来我得在这里清理一些东西。
让我们看一下运算符优先级,它表示:. 具有比 += 。-= 。*= 。/= 更高的优先级
. 为左关联
=,+=,-=,*=,/= 为右关联
我们还将看一下手册底部的注释:
注意:的优先级高于其他大多数运算符,但是PHP仍然允许类似于以下的表达式: 如果( $a = foo ( ) ),在这种情况下,foo()的返回值将放入 $a. !
意味着即使 =的优先级比 . 低得多,它首先会得到评估。 如果你执行如下操作,你也可以看到:$xy ="HERE";
echo"I am". $xy ="NOT HERE";
现在,你将认为 . 优先级比 = 高,并且将首先评估,但如手册中的注释所示:echo"I am". ($xy ="NOT HERE");
输出:I am NOT HERE
因此,如果把这些信息放在一起,我们可以说,赋值首先得到计算,但它是正确的。 意思是:$var1 = 3;
echo"Addition =". ($var1 += 3."
");
echo"Subtraction =". ($var1 -= 3."
");
echo"Addition =". ($var1 *= 3."
");
echo"Addition =". ($var1/= 3."
");
这样代码就会出现在下面:echo"Addition =". ($var1 +="3
");
echo"Subtraction =". ($var1 -="3
");
echo"Addition =". ($var1 *="3
");
echo"Addition =". ($var1/="3
");echo"Addition =". ($var1 += 3);
echo"Subtraction =". ($var1 -= 3);
echo"Addition =". ($var1 *= 3);
echo"Addition =". ($var1/= 3);
完成赋值后,将计算连接,如下所示:echo"Addition =". 6;
echo"Subtraction =". 3;
echo"Addition =". 9;
echo"Addition =". 3;
这样,你将在输出中结束:Addition = 6Subtraction = 3Addition = 9Addition = 3
现在如何解决这个问题? 简单地把你的赋值用括号括起来,这样
标签就不会被赋值。 E.g.echo"Addition =". ($var1 += 3)."
";
echo"Subtraction =". ($var1 -= 3)."
";
echo"Multiplication =". ($var1 *= 3)."
";
echo"Division =". ($var1/= 3)."
";
//^ ^ So the br tag doesn't get in the assignment of the variable.