1

我有以下变量:

$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 之间。

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

4

3 回答 3

3

缺少相等大小写($start_t === $start_n,类似 for $end_*)。否则,所有组合都在那里。

于 2013-01-11T10:33:55.207 回答
3

当您使用二元运算符时,您有 2!= 开始变量的 2 个排列,每个排列 2!= 结束变量的 2 个排列。所以,你总共有 2!*2! = 4 种组合,假设您不需要测试是否相等。这证明了您的代码对每种情况都进行了测试。

于 2013-01-11T10:41:18.857 回答
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
        }

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

于 2013-01-11T10:40:06.437 回答