2

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

4

4 回答 4

6

AND 和 && 不一样

例如:

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

不一样

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

第一件事是(a和b)或c

第二个 a 和 (b 或 c)

因为|| 优先级高于 and,但低于 &&

有关更多信息,请查看PHP 逻辑运算符运算符优先级

于 2012-10-17T08:33:19.183 回答
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 */
于 2012-10-17T08:39:04.373 回答
1

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

“and”和“or”运算符的两种不同变体的原因是它们以不同的优先级运行。(请参阅运算符优先级。)

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

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

于 2012-10-17T08:34:16.700 回答
0

它们做同样的事情,但&&and||运算符的优先级高于ANDand OR

基本上我认为这会变得令人困惑,所以如果你只坚持一种符号而不混合它们,你会没事的,你的代码将保持可读性。

于 2012-10-17T08:31:44.413 回答