在php中使用或运算符?

use*_*702 4 php logical-operators

以下代码:

  $result = (false or true);
  echo("With extra parentheses: ".($result?"true":"false"));
  $result = false or true;
  echo("<br />With no parentheses: ".($result?"true":"false"));
Run Code Online (Sandbox Code Playgroud)

生成输出:

With extra parentheses: true
With no parentheses: false
Run Code Online (Sandbox Code Playgroud)

我不懂为什么.不应该$result = false or true;通过首先测试进行php评估false然后,因为它不是真的,继续评估true

任何建议将不胜感激.

Bla*_*iev 14

or操作符比赋值操作符的优先级较弱.在第二种情况下真正发生的是($result = false) or true,因此该部分or true确实没有效果.

false在这种情况下,赋值运算符会将指定的值作为结果.将赋值运算符视为产生结果的普通二元运算符(如+,<or),唯一的区别是它具有副作用.

如果你想避免括号,你可以换or||,它具有更强的优先级.

使用英文版逻辑运算符时要小心,因为它们的优先级不同.