php xor运算符未按预期工作

php xor运算符未按预期工作,php,xor,Php,Xor,我有以下代码。如果我分别运行每个条件,它可以正常工作,但只要添加“xor”或“or”或“or”| |运算符,它们似乎都不匹配 我知道这将是一件简单的事情,我错过了,但无法发现它。我用这个操作符错了吗 if ($usercurrentpassword['password'] != $currentpasswordmd5 xor $usercurrentpassword['password'] != $currentpasswordsha1){ $a = "C

我有以下代码。如果我分别运行每个条件,它可以正常工作,但只要添加“xor”或“or”或“or”| |运算符,它们似乎都不匹配

我知道这将是一件简单的事情,我错过了,但无法发现它。我用这个操作符错了吗

if ($usercurrentpassword['password'] != $currentpasswordmd5 xor $usercurrentpassword['password'] != $currentpasswordsha1){
                    $a = "Current passwords do not match";
                    return $a;
                }

也许您应该使用括号:

if (($usercurrentpassword['password'] != $currentpasswordmd5) xor ($usercurrentpassword['password'] != $currentpasswordsha1)) {

就我而言,PHP(任何其他语言)中的XOR(独占析取)操作符是插入符号。试试看。

您可能遇到了主持顺序问题。您的if语句中没有括号,因此我无法猜测您的预期执行顺序。已尝试使用括号,如下面的注释,但相同。如果我将语句更改为只检查一个变量,那么它可以正常工作,但不是非此即彼。此外,算法似乎是错误的-如果密码没有相同的MD5或SHA1,它将不会响应任何内容。也许问题在于你如何“编码”你的思想?算法的作用是什么?