【问题标题】:How can I simplfy this logic我怎样才能简化这个逻辑
【发布时间】:2011-01-26 06:09:12
【问题描述】:

我在简化这个条件语句逻辑时遇到了麻烦。有没有更活泼的写法?

if(($x || $a) && ($x || $y))
{
   if($x){
          return true;
   }
}
return false;

【问题讨论】:

    标签: php conditional logic if-statement


    【解决方案1】:
    if ($x) return true;
    return false;
    

    根据你的说法,只有当$x 为真时你才返回真,因此这是你真正需要检查的唯一语句,对吗?变量$a$y 完全不相关。

    编辑:与以下内容相同:

    return (bool) $x;
    

    【讨论】:

    • 当且仅当$a$y 之一是true 时,他可能想要这样做。
    • 我会使用return (bool) $x;
    • @The machine Charmer:但即使在第一个语句中,如果$x 为真,那么两个语句都会自动变为真。如果$x || $a$x || $y 都为真且$x 为真,则它们之间的&& 使整体陈述也为真。
    • @Gumbo:那会很好。 :) @fastcodejava:没有人说 $x 是布尔值。
    【解决方案2】:

    如果你只在 $x 为真时返回真,那么剩下的代码就无关紧要了。因此,

    return (bool) $x;
    

    编辑:哎呀... bool 是一个演员,而不是一个函数。

    【讨论】:

      【解决方案3】:

      外层if($x || $a) && ($x || $y)的条件等价于$x || ($a && $y)。当我们将其与$x 也必须为true(内部if)的条件结合起来,我们得到($x || ($a && $y)) && $x。这相当于$x && $x || $x && $a && $y,可以简化为$x || $x && $a && $y。在两个 OR 分支中,$x 必须为 true 才能继续。但是如果右分支中的$xtrue,那么整个条件已经是true了。

      所以唯一需要为真的变量是$x:

      return (bool) $x;
      

      【讨论】:

        【解决方案4】:

        正如一些人已经说过的,只有 $x 在您的代码中很重要。我想最短的代码是:

        return $x
        

        【讨论】:

        • 如果$x 是字符串或数字怎么办?然后它不会返回布尔值 true/false。
        • 你是对的。似乎我们确实需要 if($x) return true;否则返回false,那么。无论如何,当它唯一要做的就是检查 $x 的值时,为什么还要有一个方法呢...
        • 我不知道,这似乎是一个很好的学校作业,谁知道呢。
        【解决方案5】:
        if($x && ($a || $y))
             return true;
        
        return false;
        

        【讨论】:

        • 这在语义上是不一样的。 ($x || $a) && ($x || $y) 相当于 $x || ($a && $y)$x && ($a || $y) 相当于 ($x || $a) && ($x || $y)
        【解决方案6】:
        if(($x && $a && $y)
        {
            return true;
        }
        return false;
        

        EDIT : 就是return $x;

        【讨论】:

          【解决方案7】:

          你可以把它写成一行表达式...

          return $x;
          

          不管 $a 和 $y,$x 必须为真才能返回真

          【讨论】:

            【解决方案8】:
               if($x){
                      return true;
               }
            
               return false;
            

            ?

            编辑:

            return $x
            

            【讨论】:

              猜你喜欢
              • 2022-01-11
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-09-28
              • 2020-06-08
              相关资源
              最近更新 更多