요기보드3   필수기초 선택과목 요기보드 그누보드 로그인

P H P


switch 조건문

▶ switch 조건 분기문
if문으로 웬만한 조건은 다 처리할 수 있지만, 조건이 아주 많아지면 else if 가 엄청 쓰여야 되겠지.
예를 들어 변수 $a의 값이 ‘개’면 멍멍, ‘소’면 음메, ‘닭’이면 꼬끼오, ‘말’이면 히힝… 같이 수많은 동물소리를 표현한다고 생각해 봐.
if를 사용하려면…

if ($a == ‘개) { 명령…}
else if ($a == ‘소’) { 명령…}
else if ($a == ‘닭’) { 명령…}
else if ($a == ‘말’) { 명령…}
...

이런 식으로 적어야겠지?
물론 이렇게 사용해도 돼. 그런데 문제는 if 조건문은 맨 위부터 하나씩 조건에 맞는지 검사하면서 내려온다는 거야.
그래서 만일 else if 조건줄이 1,000줄이고 조건에 맞는 놈이 마지막 줄에 있다면 1,000번을 검사해야 해. 당연히 시간도 많이 걸리겠지?
이때 원하는 자리로 바로 건너뛰면 좋겠지?
이럴 때 사용하는 것이 바로 switch 조건문이야. 건너뛴다고 해서 ‘분기문’이라고 부르기도 해.
switch문의 기본형태는 다음과 같아


switch (조건) {
  case 값1 :
     명령1 ;
     break ;
  case 값2 :
     명령2 ;
     break ;
  ...
  ...
  default :
     명령 ;
     break ;
 }

즉, (조건)에 맞는 case 자리로 바로 건너뛰는 거야. 그리고 만일 case에 맞는 값이 없으면 default 자리로 곧장 가 버려.
각 case문 마지막에 break는 이 switch문을 나가라는 뜻이야.
만일 break가 없으면 break를 만날 때까지 아래쪽 case문과 default도 검사하게 돼.
연습으로 설명한 개, 소, 닭, 말 소리를 표현해 보자면…


<?php
$a = '말' ;
switch ($a) {
    case '개' : 
       echo '멍멍' ;
       break ;
    case '소' :
       echo '음메' ;
       break ;
    case '닭' :
       echo '꼬꼬' ;
       break ;
    case '말' :
       echo '히힝' ;
       break ;
    default : 
       echo '??' ;
       break ;
}
?>

명령들이 간단하니까 줄 수를 좀 줄여 볼까?
; 기호로 명령을 구분하니까 아래와 같이 한 줄로 표현해도 되겠지?


  $a = '말' ;
  switch ($a) {
      case '개' : echo '멍멍' ;  break ;
      case '소' : echo '음메' ;  break ;
      case '닭' : echo '꼬꼬' ;  break ;
      case '말' : echo '히힝' ;  break ;
      default   : echo '??'   ;  break ;
   }

훨씬 간결해 보이지?


목차제 목조회
221
239
230
231
331
176
189
180
173
255
230
248
183
300