금액

2013-01-11 10 views
1

I가 다음과 같은 변수 : 내가 원하는금액

$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 가지! * 2! = 4 조합. 평등을 테스트 할 필요가 없다고 가정합니다. 이렇게하면 모든 경우에 대해 코드가 테스트됩니다.