혹시 이거 if 문 줄여쓰는 팁 있을까요?

혹시 이거 if 문 줄여쓰는 팁 있을까요?

QA

혹시 이거 if 문 줄여쓰는 팁 있을까요?

본문

<? 

if ($view['wr_1'] || $view['wr_2'] || $view['wr_3'] || $view['wr_4'] || $view['wr_10'] || $view['wr_13']) { 

?>

 

위에 if문을 줄여 쓸 수 있는 팁 있을까요??

이 질문에 댓글 쓰기 :

답변 4

위의 if문을 줄일 수 있는 한 가지 팁은 배열로 선언하는 것입니다. 다음과 같이 작성할 수 있습니다.


$wr = array('wr_1', 'wr_2', 'wr_3', 'wr_4', 'wr_10', 'wr_13');
if (array_intersect_key($view, array_flip($wr))) {
.....
}

이렇게 하면 각 요소를 배열로 선언하고 array_intersect_key() 함수를 사용하여 $view 배열과 $wr 배열을 비교할 수 있습니다.

DB에서 select할 때

select ..., concat( wr_1,wr_2, ..., wr_13) wr_n from ...

하고

if( $view['wr_n']) // 하는 방법도 있습니다.

?>


$arr = array("wr_1","wr_2","wr_3","wr_4","wr_10","wr_13");
$arrchk = false;
foreach($arr as $key => $value) {
    if ($value) {
        $arrchk = true;
        break;
    }
}
if ($arrchk) {
   // 실제 필요로직
}

if 문의 복잡도를 줄이기위해서 선행되는 문장들이 길어졌긴했지만

 

위의 내용들의 체크가 많거나 복잡도가 높으면 나눠서 판단하는게 효과적입니다.

 

조금 다르게 응용하면 체크해야할 로직을 array 의 loop를 통해서 체크하고

or조건일때 참인경우와 and일때참인경우를 함수로 만드는것도 방법일겁니다.

 


function chk_value(array $arr){
    $return = false;
    foreach ($arr as $key => $value) {
        if($value != ""){
            $return = true;
            break;
        }
    }
    return $return;
}
$ck = array();
$ck[] = $view['wr_1'];
$ck[] = $view['wr_2'];
$ck[] = $view['wr_3'];
$ck_tf = chk_value($ck);
if($ck_tf){
    ....
}

함수를 어딘가에 박아버리면 끝 이라고 생각합니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 10,639
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT