테스트 사이트 - 개발 중인 베타 버전입니다

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

밀리지 2년 전 조회 1,528

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

?>

 

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

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

답변 4개

채택된 답변
+20 포인트
그누위즈

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

</p>

<p>$wr = array('wr_1', 'wr_2', 'wr_3', 'wr_4', 'wr_10', 'wr_13');

if (array_intersect_key($view, array_flip($wr))) {</p>

<p>.....</p>

<p>}</p>

<p>

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

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

답변에 대한 댓글 1개

밀리지
2년 전
감사합니다!

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

2년 전

</p>

<p>function chk_value(array $arr){

    $return = false;

    foreach ($arr as $key => $value) {

        if($value != ""){

            $return = true;

            break;

        }

    }

    return $return;

}</p>

<p>$ck = array();

$ck[] = $view['wr_1'];

$ck[] = $view['wr_2'];

$ck[] = $view['wr_3'];</p>

<p>$ck_tf = chk_value($ck);

if($ck_tf){

    ....

}</p>

<p>

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

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

답변에 대한 댓글 1개

밀리지
2년 전
꿀팁 감사합니다!

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

DB에서 select할 때

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

하고

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

?>

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

답변에 대한 댓글 1개

밀리지
2년 전
감사합니다!

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

플래토
2년 전

</p>

<p>$arr = array("wr_1","wr_2","wr_3","wr_4","wr_10","wr_13");</p>

<p>$arrchk = false;</p>

<p>foreach($arr as $key => $value) {</p>

<p>    if ($value) {</p>

<p>        $arrchk = true;</p>

<p>        break;</p>

<p>    }</p>

<p>}</p>

<p>if ($arrchk) {</p>

<p>   // 실제 필요로직</p>

<p>}</p>

<p>

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

 

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

 

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

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

 

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

답변에 대한 댓글 1개

밀리지
2년 전
오 좋은 방법이네요, 감사합니다

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

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

로그인