PHP的逻辑运算符中,xor表示逻辑异或
$a xor $b
结果
如果 $a 和 $b 有且仅有一个为 true,则返回 true;如果都是true 或 false,则返回false。
然而在测试xor运算符时,发现一点问题
错误情况1
<?php
$a = false xor true;
var_dump($a);
?>
结果1
boolean false
情况2
<?php
$a = true xor false;
var_dump($a);
?>
结果2
boolean true
这是怎么回事呢?
我们换个测试xor运算符的方式
情况3
<?php
echo false xor true;
?>
结果3
1
这样就没问题了,那么前两种情况是哪里有毛病呢?
情况4
<?php
$a = (false xor true);
var_dump($a)
?>
结果4
boolean true
这样就对了,可见应是运算符优先级导致的。
在PHP中,and、or、xor的运算符优先级是比 = 低的,在这种情况下,加个小括号就好了……