【发布时间】:2011-01-26 06:09:12
【问题描述】:
我在简化这个条件语句逻辑时遇到了麻烦。有没有更活泼的写法?
if(($x || $a) && ($x || $y))
{
if($x){
return true;
}
}
return false;
【问题讨论】:
标签: php conditional logic if-statement
我在简化这个条件语句逻辑时遇到了麻烦。有没有更活泼的写法?
if(($x || $a) && ($x || $y))
{
if($x){
return true;
}
}
return false;
【问题讨论】:
标签: php conditional logic if-statement
if ($x) return true;
return false;
根据你的说法,只有当$x 为真时你才返回真,因此这是你真正需要检查的唯一语句,对吗?变量$a 和$y 完全不相关。
编辑:与以下内容相同:
return (bool) $x;
【讨论】:
$a、$y 之一是true 时,他可能想要这样做。
return (bool) $x;
$x 为真,那么两个语句都会自动变为真。如果$x || $a 和$x || $y 都为真且$x 为真,则它们之间的&& 使整体陈述也为真。
$x 是布尔值。
如果你只在 $x 为真时返回真,那么剩下的代码就无关紧要了。因此,
return (bool) $x;
编辑:哎呀... bool 是一个演员,而不是一个函数。
【讨论】:
外层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了。
所以唯一需要为真的变量是$x:
return (bool) $x;
【讨论】:
正如一些人已经说过的,只有 $x 在您的代码中很重要。我想最短的代码是:
return $x
【讨论】:
$x 是字符串或数字怎么办?然后它不会返回布尔值 true/false。
if($x && ($a || $y))
return true;
return false;
【讨论】:
($x || $a) && ($x || $y) 相当于 $x || ($a && $y) 和 $x && ($a || $y) 相当于 ($x || $a) && ($x || $y)。
if(($x && $a && $y)
{
return true;
}
return false;
EDIT : 就是return $x;
【讨论】:
你可以把它写成一行表达式...
return $x;
不管 $a 和 $y,$x 必须为真才能返回真
【讨论】:
if($x){
return true;
}
return false;
?
编辑:
return $x
【讨论】: