2012-07-12 2 views
1

나는 하나의 if 문이 참일 때 다음 if 문을 테스트 할 필요가없는 if 문을 많이 가지고 있습니다.PHP 브레이크 연속 If 문

이 작업을 수행하는 가장 좋은 방법은 무엇인지 알 수 없습니다.

함수, 전환 또는 while 루프를 만들어야합니까?

각각의 연속적인 if 문은 서로 다르며 입력 값이 미리 만들어져 있습니다. 나는 이것을 더 잘 설명하려고 간단한 예제를 만들려고 노력할 것이다.

$total = ($val1+$val2+$val3)/$arbitaryvalue 
if($total > 2){//Do Something 
} 

$total = ($val1+$val2)/$anothervalue 
if($total > 2){//Do Something different 
} 
+0

은. 나는 함수를 사용하거나 객체 나 배열에 조건을 저장하고 그에 따라 반복 할 것을 주장합니다. – RobB

답변

2

첫 번째 조건이 거짓으로 평가되는 경우 유일한 실행을 의미하는 이전 if 문의 else에 해당 항목을 삽입하십시오. if 문을 많이 사용하는 경우 문제가 발생합니다. 요구 사항의 척도를 나타내는 질문에 예제가 있습니까? 실제의 예에 의한 것이다 루프로 이동할지 여부를 결정

$total = ($val1+$val2+$val3)/$arbitaryvalue 
if($total > 2){//Do Something 
} 
else 
{ 

    $total = ($val1+$val2)/$anothervalue 
     if($total > 2){//Do Something different 
    } 

} 
+0

왜 이런 생각을하지 않았습니까! 그런 간단한 대답. 나는 약 18 개의 연속적인 if 문을 가지고 있기 때문에 이것은 지저분해질 것이다. – Somk

1
if (condition) { 

} 

else if (another_condition) { 

} 

... 

else if (another_condition) { 

} 

0

. $ total을 설정하는 패턴이 있으면 루프를 사용할 수 있습니다. $ val1과 + $을 val2 및 $ anotherValue라는 부분에 패턴이있는 경우

if(($val1+$val2+$val3)/$arbitraryvalue > 2){ 
    //Do Something 
} 
else if(($val1+$val2)/$anothervalue > 2) 
{ 
    //Do something different 
} 

그러나, 루프가 더 나은 해결책이 될 수 있습니다하지 않으면 문이 경우, 단지 연속 할 것이 더있을 수 있습니다. 내 견해로는, 귀하의 결정은 패턴이 의미가 있는지 없는지에 따라 달라져야합니다.

0

else을 사용하면 유익하지 않고 유지 관리가 어려울 수 있으므로 기능을 활용할 것을 제안합니다.

return을 사용하여 조건이 충족되면 언제든지 함수를 종료 할 수 있으므로 함수가 더 적합합니다.

함수 내에서 호출하는 경우

는 return 문은 즉시 는 현재 함수의 실행을 종료하고, 으로 함수 호출의 값을 인수를 반환합니다. 당신의 댓글을 달았습니다 코드에 표시된대로 몇 가지 유형의 액션을 수행하려면

<?php 

function checkConditions(){ 
    $val1 = 5; 
    $val2 = 10; 
    $val3 = 8; 

    $arbitaryvalue = 5; 
    $anothervalue = 4; 

    $total = ($val1+$val2+$val3)/$arbitaryvalue; 

    if($total > 2){ 
     return 'condition 1'; 
    } 

    $total = ($val1+$val2)/$anothervalue; 
    if($total > 2){ 
     return 'condition 2'; 
    } 

    return 'no conditions met'; 
} 

echo checkConditions(); 
?> 

, 당신은 적절한 조치를 수행 할 수 있습니다 아래에 포함

은 데모 용으로 설정 더미 값으로 샘플 기능입니다 함수에서 돌아 오기 전에 벤 에버 라드의 말씀

0

올바른 방법이지만, 다른 많은 솔루션이 있습니다 : 문이 상황에서 완전한 악몽이 될 것 if``활용

$conditions = array(
    array(
    'condition' => ($val1+$val2+$val3)/$arbitaryvalue, 
    'todo' => 'doSomething', 
), 
    array(
    'condition' => ($val1+$val2)/$arbitaryvalue, 
    'todo' => 'doSomethingDifferent', 
), 
    // ... 
); 

foreach ($conditions as $item) 
{ 
    if ($item['condition']) 
    { 
    // $item['todo'](); 
    call_user_func($item['todo']); 
    break; 
    } 
} 


function doSomething() 
{ 
    // ... 
} 

function doSomethingDifferent() 
{ 
    // ... 
}