逻辑组合的数量

时间:2013-01-11 10:30:35

标签: php if-statement logical-operators

我有以下变量:

$start_t = 1;
$start_n = 2;
$end_t = 6;
$end_n = 5;

我想检查$ start_t和$ start_n AND $ end_t和$ end_n之间的所有逻辑组合。

我有以下内容:

if($start_t >= $start_n && $end_t >= end_n)
{ // Do stuff }
elseif($start_t < $start_n && $end_t >= $end_n)
{ // Do stuff }
elseif($start_t >= $start_n && $end_t < $end_n)
{ // Do stuff }
elseif($start_t < start_n && $end_t < $end_n)
{ // Do stuff }

还有其他我看不到的组合吗?我的意思是$ start_t,$ start_n和$ end_t以及$ end_n。

有没有办法计算所有可用的组合?

3 个答案:

答案 0 :(得分:3)

缺少相等案例($start_t === $start_n,类似于$end_*)。否则,所有组合都在那里。

答案 1 :(得分:3)

当您使用二元运算符时,您有2个! = 2个起始变量的排列,每个变换2个! = 2个结束变量的排列。所以,你总共有2个!* 2! = 4种组合,假设您不需要测试相等性。这证明您的代码可以测试每个案例。

答案 2 :(得分:2)

        if($start_t >= $start_n)
        {
            if($end_t >= end_n)
                //do stuff
            else
                //do stuff
        }
        else
        {
            if($end_t >= end_n)
                //do stuff
            else
                //do stuff
        }

重新构建这样可以帮助您更好地识别组合。您可以稍后将其重构为原始格式