【问题标题】:Usage of or operator in php?php中or运算符的用法?
【发布时间】:2011-06-22 15:57:24
【问题描述】:

以下代码:

  $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

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

任何建议将不胜感激。

【问题讨论】:

    标签: php logical-operators


    【解决方案1】:

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

    赋值运算符产生分配的值作为其结果,在本例中为false。将赋值运算符视为产生结果的普通二元运算符(如 +&lt;or),唯一的区别是它有一个副作用。

    如果要避免括号,可以将or 换成||,优先级更高。

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

    【讨论】:

      猜你喜欢
      • 2015-07-08
      • 2012-08-26
      • 1970-01-01
      • 2014-03-03
      • 2021-06-20
      • 2010-10-23
      • 2016-07-08
      • 2018-04-17
      • 1970-01-01
      相关资源
      最近更新 更多