逻辑运算符 - PHP中的'or'与'||'(双竖线)有何区别?

18

我一直使用双竖线 || 来表示 if (($a == $b) || ($a == $c)) { },并使用 or 表示 do_this() or do_that();

为什么不用 if (($a == $b) or ($a == $c)) { } 或者 do_this() || do_that(); 呢?

这两个逻辑运算符有没有使用它们的原因,还是只是个人偏好呢?

对于 &&and,同样适用,但我只使用 &&


2
关于重复问题:这个问题非常相似,确实如此,但并不完全相同。不幸的是,当你仅以“|| vs OR”搜索时很难找到一个问题,这就是为什么我在标题中使用了“双管符”的原因。 - Miawa
2个回答

23

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

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

在许多情况下,它们也更易读。


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

9

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接