将此 PHP 表达式括起来会更改结果。为什么?
Putting parentheses around this PHP expression changes the result. Why?
这两行产生不同的结果:
$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
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 的情况下,您通过括号强制执行顺序。
这两行产生不同的结果:
$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
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 的情况下,您通过括号强制执行顺序。