【问题标题】:PHP AND (&&), OR (||) prioritisation in conditional statementsPHP AND (&&), OR (||) 条件语句中的优先级
【发布时间】:2013-03-30 12:12:54
【问题描述】:

有人能解释一下是否可以将 PHP If 条件语句(包含说 AND)与另一个 OR 合并吗?如果是这样,人们将如何构建语法?哪个优先?

例如,可能的目标是实现...

IF ($Var1 == "a" && $Var2 == "z"){
    //TRUE
        echo "HELLO WORLD";

        //<some code block here>
}

OR

IF ($Var3 == "5"){
    //TRUE
        echo "HELLO WORLD";

        //<some code block here>
}

但合并到一个 if 条件语句中,这样我就不必为两个 if 语句复制我的代码块(我知道我可以将代码放在函数中的 IF 语句中运行,但是还有另一个方法)。

总而言之(注意,下面的括号纯粹是作为对项目进行分组的一种方式,以表明我对如何运行/处理代码的意图):

(If Var1 = a AND Var2 = b) OR (if Var3 = 5), run block of code.

如果有人能帮助我,我将不胜感激。几个月来我一直试图找出这个问题,但一无所获。抱歉,如果这已经在 Stack Overflow 上讨论过,我尝试搜索但一无所获,尽管我的搜索词可能是错误的。

【问题讨论】:

  • 感谢萨尔曼 A 和马克贝克。查看提供的链接,我发现 && 确实优先于 ||我认为我会在我的编码中使用方括号,因为这会强制执行我需要的优先级。如果以后需要任何调试,这也应该使代码更容易。
  • 它不仅强制执行优先级,还应该提高可读性
  • @MarkBaker:完全是我的想法。谢谢你的帮助。我已经解决了一个长转查询:)

标签: php conditional-statements conditional-operator


【解决方案1】:
if ($Var1 == 'a' && $Var2 == 'b' || $Var3 == 5)
{ 
//run block of code.
}

【讨论】:

    【解决方案2】:

    你快到了:

    if ( ($Var1 == "a" && $Var2 == "z") || ($Var3 == "5") ) {
    

    仔细看括号的顺序。在我遇到的几乎所有语言中,条件中的括号表示括号中表达式的结果将作为一个整体进行评估。 PHP 也不例外 - 前半部分仅在 var1 = a 和 var2 = z 时为真,而后半部分或仅在 var3 = 5 时为真。当 [var1, var2] = [a ,z] 或 [var3] = [z]。

    【讨论】:

    • 哇,我的伪代码语法是对的吗?优秀!我什至没有想过要尝试,我只是这样写来尝试说明我正在尝试做的事情!谢谢
    【解决方案3】:

    这样使用:-

    if (($Var1 == "a" && $Var2 == "z") || ($Var3 == "5")) {
        echo "Hello World";
    }
    

    【讨论】:

      【解决方案4】:

      检查一下:

      if (($Var1 == "a" && $Var2 == "z") || ($Var3 == "5")){
          //TRUE
              echo "HELLO WORLD";
      
              //<some code block here>
      }
      

      事实上,你不需要额外的括号,因为 && 的优先级高于 ||。但是,它有助于让一切都易于跟踪。

      【讨论】:

      • 感谢 Korcholis,是的,正如我在上面评论的那样,我想我还是会使用括号路线,因为它使代码更容易理解(我仍然认为自己对 PHP 比较陌生)。跨度>
      猜你喜欢
      • 2010-11-14
      • 1970-01-01
      • 2013-05-16
      • 1970-01-01
      • 2014-05-04
      • 2018-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多