PHP手册并没有说有一个,但是......也许有一个隐藏的?xor符号表示形式?
简而言之,我喜欢使用if
的符号操作表示法,这样我确信在搜索文档时,我总能找到我要找的东西。但与xor
有可能我的代码包含这样的字符串/值或东西。像模板类中的方法 - e xor cize();.
PHP手册并没有说有一个,但是......也许有一个隐藏的?xor符号表示形式?
简而言之,我喜欢使用if
的符号操作表示法,这样我确信在搜索文档时,我总能找到我要找的东西。但与xor
有可能我的代码包含这样的字符串/值或东西。像模板类中的方法 - e xor cize();.
你可以使用!=
,如果他们俩都已经布尔值。
if (true != false) // xor
...
当然,这与在搜索结果中得到误报了同样的问题,所以也许你可以通过个人的约定(在混乱的风险你的同事)使用其他PHP一事─的等于运营商:
if (true <> false) // xor
...
如果他们还不是布尔值,那么您需要将它们转换。
if (!$a <> !$b) // xor
...
==!
操作!
$a ==! $b
相当于
$a xor $b
。
if ('hello' ==! 0) // equivalent to ('hello' xor 0)
...
这实际上'hello' == !0
>'hello' == true
>true == true
>true
是,这就是为什么它的工作原理为xor
。这是有效的,因为当PHP比较一个布尔值与其他值时,它是converts the second argument to boolean too。
嗯,是的,但正如你所说,这提供了太多的搜索结果! '==!'会转化为什么? – jolt
'==!'作为逻辑'xor'工作。 '$ a ==! $ b'实际上是'$ a ==!$ b',这与'!$ a!=!$ b'是一样的,因为当一边是布尔值时,PHP会将两边强制转换为布尔值。 –
见bitwise operators。它是符号^
。
的异或运算符PHP是^
。
如果你想使用xor
(在任何语言,真的,不只是PHP),但你担心搜索它找到像的东西,你可以只搜索" xor "
(在任一侧的空间)。
或者任何正则表达式,防止周围的文字也变成了xor
字的一部分,诸如(仅举例):
[^a-zA-Z0-9_]xor[^a-zA-Z0-9_]
确实如此,但'xor'比较之间没有空格,即:if(($ this && $ that)xor($ foo && $ bar))''。罕见的发生,但仍然会发生。 – jolt
如果您正在寻找逻辑xor
,没有符号相当于。
如果你发现自己在一个情况下的XOR运算符不存在,那么你就可以模拟它与,或,而不是。
(A & &!B)|| (!A & & B)在逻辑上等同于xor。
相关:[参考 - 这个符号在PHP中的含义是什么?](http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php) – jensgram