我在简化这种条件语句逻辑时遇到了麻烦。是否有更热情的写作方式?
if(($x || $a) && ($x || $y))
{
if($x){
return true;
}
}
return false;
答案 0 :(得分:6)
if ($x) return true;
return false;
根据你的陈述,如果$x
为真,你只返回true,因此这是你真正需要检查的唯一陈述,对吗?变量$a
和$y
完全无关。
编辑:同样的事情:
return (bool) $x;
答案 1 :(得分:4)
如果只有$ x为true才返回true,那么剩下的代码就无关紧要了。因此,
return (bool) $x;
编辑:哎呀...布尔是一个演员,而不是一个函数。
答案 2 :(得分:2)
外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 才能继续。但如果右侧分支中的$x
为 true ,则整个条件已经 true 。
所以唯一需要 true 的变量是$x
:
return (bool) $x;
答案 3 :(得分:1)
就像几个人已经说过的那样,只有$ x在你的代码中很重要。我想最短的代码是:
return $x
答案 4 :(得分:0)
if($x){
return true;
}
return false;
编辑:
return $x
答案 5 :(得分:0)
if($x && ($a || $y))
return true;
return false;
答案 6 :(得分:0)
if(($x && $a && $y)
{
return true;
}
return false;
编辑:只是return $x;
答案 7 :(得分:0)
你可以把它写成一行表达式......
return $x;
无论$ a和$ y,$ x必须为true才能返回true