2026, 새로운 도약을 시작합니다.

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

<? 

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

?>

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

답변 4개

채택된 답변
+20 포인트

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

Copy


$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 배열을 비교할 수 있습니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

감사합니다!

댓글을 작성하려면 로그인이 필요합니다.

Copy


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){

    ....

}

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

꿀팁 감사합니다!

댓글을 작성하려면 로그인이 필요합니다.

DB에서 select할 때

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

하고

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

?>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

감사합니다!

댓글을 작성하려면 로그인이 필요합니다.

Copy


$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일때참인경우를 함수로 만드는것도 방법일겁니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

오 좋은 방법이네요, 감사합니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고