【问题标题】:PHP combining boolean operators (AND, OR) in an if statementPHP 在 if 语句中组合布尔运算符(AND、OR)
【发布时间】:2014-05-30 21:53:46
【问题描述】:

我想知道是否可以像这样在一个 if 语句中组合两个运算符(OR 和 AND)。

if($apple==1 && $orange==2 || cake==0)

我要说明的是:如果苹果等于 1 且橙子等于 2,或者蛋糕等于 0,则执行此操作。换句话说,我需要苹果和橙子等于上述数字或蛋糕等于 0。

这个表达正确吗?如果没有,最简单的方法是什么?

谢谢。

【问题讨论】:

    标签: php if-statement boolean


    【解决方案1】:

    您应该使用内括号作为优先级..

    原因是......包裹在括号内的第一个条件将被评估为一个块

    正如其他用户提到的,&& 的优先级高于 ||,不需要括号,但如果您的 if 语句继续这样的话..

    if($apple==1 || $orange==2 && cake==0) 
    

    那么你需要继续..

    if(($apple==1 || $orange==2) && cake==0)
    

    旁注:使用括号始终是一个好习惯...

    【讨论】:

    • 为什么“应该”这样使用括号?它们都是向左的关联运算符,&& 具有更高的优先级。
    • 你应该在你的情况下使用括号,因为&&的优先级高于||
    • @user2864740 抱歉。我做错了。在这种情况下,您不需要括号,因为&& 的优先级高于||。所以你的答案是正确的
    • 前两段与第三段仍不一致。如果“不需要”,就没有“理由”。它是一个或另一个。
    【解决方案2】:

    表达式

    $apple==1 && $orange==2 || $cake==0
    

    等价于

    ($apple==1 && $orange==2) || $cake==0
    

    因为&&has a higher precedence。因此,它的意思是“当苹果是 1,橙子是 2,或者蛋糕是 0”。

    虽然可以使用括号 - 并且可以使代码更具可读性 - 在这种情况下不需要它们。但是写的时候需要括号

    $apple==1 && ($orange==2 || $cake==0)
    

    表示“当苹果为 1 时,橙子为 2 或蛋糕为 0”。

    【讨论】:

      【解决方案3】:

      在您的情况下,该子句应如下所示。

      if(($apple==1 && $orange==2) || cake==0)
      

      【讨论】:

      • 没有必要发布 2 个类似的答案,因为有人已经发布了。这是愚蠢的行为。
      猜你喜欢
      • 2012-02-22
      • 1970-01-01
      • 1970-01-01
      • 2019-02-10
      • 1970-01-01
      • 1970-01-01
      • 2021-06-20
      • 1970-01-01
      • 2012-12-19
      相关资源
      最近更新 更多