xor符号表示?

时间:2011-06-20 08:25:34

标签: php xor

PHP手册并没有说有一个,但是......也许有一个隐藏的?

简单地说,我喜欢使用带有符号操作表示的if,这样我确信在搜索文档时,我总能找到我正在寻找的东西。但是对于xor,我的代码可能包含这样的字符串/值或其他内容。比如,模板类中的方法 - e xor cize();。

5 个答案:

答案 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,则没有等效的符号。