2013-01-11 88 views
1

我有以下變量:金額邏輯組合

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

我想檢查$ start_t和$ start_n和$ 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之間。

有什麼方法可以計算所有可用的組合?

+1

什麼時候他們是平等的? '$ start_t == $ start_n' – Naryl

+1

它取決於你想使用的條件和邏輯運算符。假設它只有大於/小於和邏輯&&運算符,我認爲只有那4個是組合 –

+0

對不起,您是對的。我現在將更改上面的示例 –

回答

3

缺失平等情況($start_t === $start_n,類似於$end_*)。否則,所有組合都在那裏。

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 
     } 

像這樣的重構將幫助您更好地識別組合。您可以稍後將其重構爲原始格式

3

由於您使用的是二元運算符,因此您有2個! = 2個啓動變量的排列,並且對於每個變量,2! = 2個變量的結束變量。所以,總共有2!* 2! = 4種組合,假設您不需要測試是否相等。這證明你的代碼測試每個案例。