if~ elseif문을 switch~break 문으로 바꾸기 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

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);?>
  <?}
   ?>
 
------------------------------------------------------------------------
<<*** 작동이 전혀 안되고있는 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);?>
<?
}
?>
 
----------------------------------------------------------------------

댓글 전체

간단하게 아래처럼 해보시면 될듯 합니다.

<?
//조건이 중복되거나 말거나 첫번째 조건이 충족된 시점에서 $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);
?>
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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