在php中使用或运算符?

时间:2011-06-22 15:57:25

标签: 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"));

生成输出:

With extra parentheses: true
With no parentheses: false

我不明白为什么。不应该通过首先测试$result = false or true;来评估false,然后,因为它不是真的,继续评估true

我们非常感谢任何建议。

1 个答案:

答案 0 :(得分:14)

or运算符的优先级低于赋值运算符。在第二种情况下真正发生的是($result = false) or true,因此or true部分确实没有效果。

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

如果您想避开括号,可以将or换成||,其优先级更高。

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