这两行产生不同的结果:
$r1= true xor true ;
$r2=(true xor true);
var_dump($r1);
var_dump($r2);
输出:
bool(true)
bool(false)
为什么?
Codepen示例:http://codepad.org/O4Kn1YVa
http://php.net/manual/en/language.operators.precedence.php
=优先级高于xor
$r1 = true xor true ;
=>
($r1 = true) xor true ; // "=" has highest priority
=>
$r1 xor true ; // and only now xor
在这种情况下,您不会在任何地方写入xor的结果,并且已经丢失了它
在结果为2的情况下,您使用括号强制执行顺序。
所有括号所做的就是强制执行优先级。因此,如果添加它们会有所不同,那么您已经更改了优先级/执行顺序。
这里的情况是这样的:http://php.net/manual/en/language.operators.precedence.php