PHP手册并没有说有一个,但是......也许有一个隐藏的?
简单地说,我喜欢使用带有符号操作表示的if
,这样我确信在搜索文档时,我总能找到我正在寻找的东西。但是对于xor
,我的代码可能包含这样的字符串/值或其他内容。比如,模板类中的方法 - e xor cize();。
答案 0 :(得分:6)
PHP中的独占或运算符是^
。
如果你想使用xor
(在任何语言中,真的,不仅仅是PHP),但你担心搜索它会发现像exorcize
这样的东西,你可以只搜索" xor "
(两边都有空格)。
或者,任何阻止周围文本成为xor
单词一部分的正则表达式,例如(仅限示例):
[^a-zA-Z0-9_]xor[^a-zA-Z0-9_]
答案 1 :(得分:5)
如果他们都是布尔值,你可以使用!=
。
if (true != false) // xor
...
当然,这与在搜索结果中出现误报有同样的问题,所以也许您可以采用个人惯例(可能会使您的同事感到困惑)使用其他PHP不等运算符:< / p>
if (true <> false) // xor
...
如果他们不是布尔人,你需要施展他们。
if (!$a <> !$b) // xor
...
<小时/> 编辑:在对PHP非常宽松的类型强制进行一些实验之后,我给你一个自己创建的伪运算符,
==!
运算符! $a ==! $b
相当于$a xor $b
。
if ('hello' ==! 0) // equivalent to ('hello' xor 0)
...
这实际上是'hello' == !0
&gt; 'hello' == true
&gt; true == true
&gt; true
,这就是xor
的原因。这是有效的,因为当PHP将一个布尔值与其他任何布尔值进行比较时,它converts the second argument to boolean too。
答案 2 :(得分:3)
见bitwise operators。这是符号^
。
答案 3 :(得分:3)
如果您发现自己处于不存在xor运算符的情况下,则可以使用和,或,而不是模拟它。
(A&amp;&amp;!B)|| (!A&amp;&amp; B)在逻辑上等同于xor。
答案 4 :(得分:0)
如果您正在寻找逻辑xor
,则没有等效的符号。