2013-05-14 1 views
0

내 코드에서 중첩 된 if-else 조건을 많이 수행합니다. 34 번이나 해. 있잖아, 정말 미치겠 어. 그것을 줄이는 방법을 가르쳐주세요. 고맙습니다.중첩 된 if-else 조건을 줄이는 방법은 무엇입니까?

여기에 내 코드 :

if ($input_age > $age_min && $input_age <$age_max){ 
if ($input_heigh > $heigh_min && $input_heigh < $heigh_max){ 
    if ($input_ds == "yes" && $ds_val=="yes"){ 
    //some calculation 
    } 
    else if ($input_ds == "no" && $ds_val=="yes"){ 
    //some calculation 

    } 
    else if ($input_ds == "yes" && $ds_val=="no"){ 
    //some calculation 

    } 
    else if ($input_ds == "no" && $ds_val=="no"){ 

    //some calculation 

    } 
} 
else if ($input_heigh < $heigh_min || $input_heigh > $heigh_max){ 
    if ($input_ds == "yes" && $ds_val=="yes"){ 
    //some calculation 

    } 
    else if ($input_ds == "no" && $ds_val=="yes"){ 
    //some calculation 

    } 

    else if ($input_ds == "yes" && $ds_val=="no"){ 
    //some calculation 

    } 
    else if ($input_ds == "no" && $ds_val=="no"){ 
    //some calculation 

    } 
} 

많은 나 같은 경우에 스위치를 사용하는 것이 좋습니다 경우 - 다른 실행 조건

+1

중첩 된 레이아웃이 마음에 들지 않습니까? 각 계산을 처리하는 함수로 코드를 리팩터링하여 코드를 읽기 쉽게 만들 수 있습니다. – gunnx

+0

@gunnx - 내 마음을 읽었습니까? 나는 비슷한 것을 쓰려고했다. –

답변

1

훨씬 더 읽기 더. 다음은 간단한 예입니다.

switch($input_ds.$ds_val){ 
    case 'yesyes': 
     //some calculations 
     break; 
    case 'yesno': 
     //some calculations 
     break; 
    case 'noyes': 
     //some calculations 
     break; 
    case 'nono': 
     //some calculations 
     break; 
} 
+0

다행이 글을 읽었는데, 나는 그런 스위치를 사용할 수 있는지 몰랐다. 게시 해 주셔서 감사합니다. –

+0

고맙습니다 만, 여전히 if-else 조건을 사용하고 있습니까? 그것은 내가 추측하는 else-if 조건을 감소시키지 않습니다. – dantikari

+0

else-if 조건을 줄이기 위해,이 예제에서는 switch if elseif cond from your code from block – Agrest

관련 문제