(x&& y || z)和(x AND y OR z)之间的差异

时间:2012-10-17 08:29:09

标签: php comparison operators

我想知道使用单词(例如ANDOR)而不是等效代码(&&||)进行比较是否存在任何缺点?除了后者是与许多其他编程语言兼容的语法之外,还有其他理由选择它们吗?

4 个答案:

答案 0 :(得分:6)

AND与&&

不同

例如:

<?php $a && $b || $c; ?>

不一样
<?php $a AND $b || $c; ?>

首先是 (a和b)或c

第二个 a和(b或c)

因为||优先级高于和低于&amp;&amp;&amp;

有关详细信息,请查看PHP Logical OperatorsOperator Precedence

答案 1 :(得分:5)

=运算符一起使用时会出现意料之外的缺点。

$result = false || true; # true, $result is true
/* Translated to result = (false || true) */

$result = false or true; # true, $result is false
/* Translated to (result = false) or true */

答案 2 :(得分:1)

PHP手册(在Logical Operators中)讨论了你在问题中提出的问题:

  

“和”和“或”运算符的两种不同变体的原因是它们以不同的优先级运行。 (见Operator Precedence。)

所以区别在于优先级,而不是每个运算符的逻辑含义。

在您的示例中:(x && y || z)(x AND y OR z)您将看不到两个表达式之间的任何差异。

答案 3 :(得分:0)

他们做同样的事情,但&&||运算符的优先级高于ANDOR

基本上我认为这会让人感到困惑,所以如果你只是坚持一种符号而不是混合它们,你就没事了,你的代码仍然可读。

相关问题