逻辑运算符或vs || (双管)在PHP中

Mia*_*awa 16 php logical-operators

我总是使用||(双管)if (($a == $b) || ($a == $c)) { }orfor do_this() or do_that();.

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

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

这同样适用于&&vs and,我只使用它&&.

Jon*_*oni 17

"拼写"运算符and并且or具有较低的优先级,甚至低于赋值,因此您可以使用它们来避免在很多地方编写括号.例如:

$d=$a||$b and $c 相当于 ($d=$a||$b) && $c

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

  • 取决于 $a 和 $b 是什么。如果它们是变量,则可读性是唯一的区别。如果它们是复杂的表达式,则优先级的差异可能会起作用。 (3认同)

小智 8

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

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