if~ elseif문을 switch~break 문으로 바꾸기 정보
if~ elseif문을 switch~break 문으로 바꾸기본문
특정 게시판 또는 특정 그룹이 나올때 특정 배너를 최신글로 불러오기위해 아래처럼 head.php에 if~else문을 사용해서 넣어봤습니다. 작동은 원하는대로 잘 되긴 하는데 인덱스 페이지를 불러올때 속도가 너무 느리더라구요. 그래서 이걸 switch~ break 문으로 바꾸어보려고 하는데요.... 제가 만든 코드는 작동이 안되더군요.
어느부분이 잘못된것인지 알려주시면 감사하겠습니다. 혹은 switch문 말고 다른방식으로 더 빠르게 작동되게 할 수 있는 방법이 있다면 알려주시면 감사하겠습니다.
-------------------------------------------------------------------
<<***작동은 잘 되고있지만 속도가 너무 느린 if~ elseif문>>
<? If ($bo_table == 'board_1') {?>
<?=latest('banner',banner1, 1, 30, 500);?>
<?}elseif ($bo_table == 'board_2') {?>
<?=latest('banner',banner2, 1, 30, 500);?>
<?}elseif ($bo_table == 'board_3') {?>
<?=latest('banner',banner3, 1, 30, 500);?>
<?}elseif ($bo_table == 'board_4') {?>
<?=latest('banner',banner4, 1, 30, 500);?>
<?}elseif ($bo_table == 'board_5') {?>
<?=latest('banner',banner5, 1, 30, 500);?>
<?}elseif ($gr_id == 'group1') {?>
<?=latest('banner',banner6, 1, 30, 500);?>
<?}elseif ($gr_id == 'group2') {?>
<?=latest('banner',banner7, 1, 30, 500);?>
<?}elseif ($gr_id == 'group3') {?>
<?=latest('banner',banner8, 1, 30, 500);?>
<?}else {?>
<?=latest('banner',banner, 1, 30, 500);?>
<?}
?>
<?=latest('banner',banner1, 1, 30, 500);?>
<?}elseif ($bo_table == 'board_2') {?>
<?=latest('banner',banner2, 1, 30, 500);?>
<?}elseif ($bo_table == 'board_3') {?>
<?=latest('banner',banner3, 1, 30, 500);?>
<?}elseif ($bo_table == 'board_4') {?>
<?=latest('banner',banner4, 1, 30, 500);?>
<?}elseif ($bo_table == 'board_5') {?>
<?=latest('banner',banner5, 1, 30, 500);?>
<?}elseif ($gr_id == 'group1') {?>
<?=latest('banner',banner6, 1, 30, 500);?>
<?}elseif ($gr_id == 'group2') {?>
<?=latest('banner',banner7, 1, 30, 500);?>
<?}elseif ($gr_id == 'group3') {?>
<?=latest('banner',banner8, 1, 30, 500);?>
<?}else {?>
<?=latest('banner',banner, 1, 30, 500);?>
<?}
?>
------------------------------------------------------------------------
<<*** 작동이 전혀 안되고있는 switch문입니다.>>
<?
switch ($bo_table) {
case 'board_1':
?>
<?=latest('banner',banner1, 1, 30, 500);?>
<? break;
case 'board_2':
?>
<?=latest('banner',banner2, 1, 30, 500);?>
<? break;
case 'board_3':
?>
<?=latest('banner',banner3, 1, 30, 500);?>
<? break;
case 'board_4':
?>
<?=latest('banner',banner4, 1, 30, 500);?>
<? break;
case 'board_5':
?>
<?=latest('banner',banner5, 1, 30, 500);?>
<? break;
default:
?>
<?=latest('banner',banner, 1, 30, 500);?>
<?
}
switch ($gr_id) {
case 'group1':
?>
<?=latest('banner',banner6, 1, 30, 500);?>
<? break;
case 'group2':
?>
<?=latest('banner',banner7, 1, 30, 500);?>
<? break;
case 'group3':
?>
<?=latest('banner',banner8, 1, 30, 500);?>
<? break;
default:
?>
<?=latest('banner',banner, 1, 30, 500);?>
<?
}
?>
switch ($bo_table) {
case 'board_1':
?>
<?=latest('banner',banner1, 1, 30, 500);?>
<? break;
case 'board_2':
?>
<?=latest('banner',banner2, 1, 30, 500);?>
<? break;
case 'board_3':
?>
<?=latest('banner',banner3, 1, 30, 500);?>
<? break;
case 'board_4':
?>
<?=latest('banner',banner4, 1, 30, 500);?>
<? break;
case 'board_5':
?>
<?=latest('banner',banner5, 1, 30, 500);?>
<? break;
default:
?>
<?=latest('banner',banner, 1, 30, 500);?>
<?
}
switch ($gr_id) {
case 'group1':
?>
<?=latest('banner',banner6, 1, 30, 500);?>
<? break;
case 'group2':
?>
<?=latest('banner',banner7, 1, 30, 500);?>
<? break;
case 'group3':
?>
<?=latest('banner',banner8, 1, 30, 500);?>
<? break;
default:
?>
<?=latest('banner',banner, 1, 30, 500);?>
<?
}
?>
----------------------------------------------------------------------
댓글 전체
간단하게 아래처럼 해보시면 될듯 합니다.
<?
//조건이 중복되거나 말거나 첫번째 조건이 충족된 시점에서 $tmp 값을 가지고 탈출, 맞는 조건이 없으면 default 값적용
switch (TRUE) {
case preg_match("/(a.php)$/", $_SERVER[PHP_SELF]) : $tmp = "01"; break;// a.php 일때 01
case preg_match("/(b.php|c.php|d.php|e.php)$/", $_SERVER[PHP_SELF]) : $tmp = "02"; break; //b,c,d,e.php 일때 02
case preg_match("/^(abc)$/", $gr_id) : $tmp = "03"; break;//그룹abc 일때 03
case preg_match("/^(abc)$/", $bo_table) : $tmp = "04"; break;//게시판abc 일때 04
default : $tmp = "01"; break;
}
echo latest('banner',$tmp, 1, 30, 500);
?>
<?
//조건이 중복되거나 말거나 첫번째 조건이 충족된 시점에서 $tmp 값을 가지고 탈출, 맞는 조건이 없으면 default 값적용
switch (TRUE) {
case preg_match("/(a.php)$/", $_SERVER[PHP_SELF]) : $tmp = "01"; break;// a.php 일때 01
case preg_match("/(b.php|c.php|d.php|e.php)$/", $_SERVER[PHP_SELF]) : $tmp = "02"; break; //b,c,d,e.php 일때 02
case preg_match("/^(abc)$/", $gr_id) : $tmp = "03"; break;//그룹abc 일때 03
case preg_match("/^(abc)$/", $bo_table) : $tmp = "04"; break;//게시판abc 일때 04
default : $tmp = "01"; break;
}
echo latest('banner',$tmp, 1, 30, 500);
?>
이렇게 하면 되는군요.^^ 플록님 감사합니다.^^