혹시 이거 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){
....
}
함수를 어딘가에 박아버리면 끝 이라고 생각합니다.
!-->
답변을 작성하시기 전에 로그인 해주세요.