【问题标题】:Logical operators - 'or' vs. '||' (double pipe) in PHP [duplicate]逻辑运算符 - 'or' vs. '||' PHP中的(双管)[重复]
【发布时间】:2013-07-16 15:55:20
【问题描述】:

我一直用||(双管)表示if (($a == $b) || ($a == $c)) { },用or表示do_this() or do_that();

为什么不if (($a == $b) or ($a == $c)) { }do_this() || do_that();

是否有理由使用这两个逻辑运算符中的任何一个,或者这只是个人喜好?

&&and 相同,我只使用 &&

【问题讨论】:

  • 关于重复:问题非常相似,是真的,但不完全相同,不幸的是,当您仅搜索“|| vs OR”时很难找到问题,即我在标题中使用“双管”的原因。

标签: php logical-operators


【解决方案1】:

“拼写”运算符andor 的优先级较低,甚至低于赋值,因此您可以使用它们来避免在很多地方写括号。例如:

$d=$a||$b and $c 等价于($d=$a||$b) && $c

它们在许多情况下也更具可读性。

【讨论】:

  • if ($a || $b) { ... } 的具体情况下只是偏好使用||or?
  • 取决于 $a 和 $b 是什么。如果它们是变量,那么可读性是唯一的区别。如果它们是复杂的表达式,则优先级的差异可能会起作用。
【解决方案2】:

两个不同的版本以不同的优先级运行:

http://www.php.net/manual/en/language.operators.precedence.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-18
    • 2019-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多