我有以下变量:
$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。
有没有办法计算所有可用的组合?
答案 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
}
重新构建这样可以帮助您更好地识别组合。您可以稍后将其重构为原始格式