Loading

블로그채널

Search !

[PHP] 강좌 #12 조건문 switch case문


이번 시간에 조건문 중에서 if문 말고 유용하게 사용할 수 있는 switch case문에 대해 살펴보도록 하겠습니다.

 

The PHP switch Statement

 

if문으로 모든 것을 다 표현할 수 있습니다만, swtich case 문은 if문을 좀 더 편리하게 사용하기 위해 고안된 것입니다. 약간 특별한 형태의 if문이라고 볼 수 있습니다.

 

switch case문

switch case문

 

[문법]
switch (n) {
    case label1:
        code to be executed if n=label1;
        break;
    case label2:
        code to be executed if n=label2;
        break;
    case label3:
        code to be executed if n=label3;
        break;
    ...
    default:
        code to be executed if n is different from all labels;
}

 


문법을 살펴보면 변수 n값이  labal1과 같을 때 해당 코드를 실행하겠다는 이야기입니다. break문은 switch문 밖으로 탈출하라는 의미입니다. label1에 해당하는 내용만 실행하겠다는 이야기입니다. 만약에 break문이 없으면 case label2에 해당하는 코드를 실행하게 됩니다.

 

보통 책에서 break를 꼭 사용해야하는 것처럼 가르치는데요, 실무에서는 일부러 break문을 빼버리기도 합니다. 그 예는 마지막에 들도록 하겠습니다.

 

default문은 if문의 마지막 else문과 같다고 생각하시면 됩니다. 어떤 경우 즉 case 에 해당하는 내용이 없을 때 default 영역으로 가서 코드를 실행하게 됩니다.

 

[PHP] 강좌 #12 switch case문

[PHP] 강좌 #12 조건문 switch case문

 

 

조건문 switch case문 문법을 살펴봤으니 예제를 다루어보겠습니다.


먼저 if문부터 복습 차원에서 표현해 보겠습니다. 예를 들어 1등일 경우 10,000원 2등일 경우 1,000원 3등일 경우 100원, 4등일 경우 10원 5등일 경우 1원을 준다고 가정하면 if 문으로 다음과 같이 표현할 수 있습니다

 

$x = 3;
if (x == 1) {
    echo "10,000원";   
} elseif (x == 2) {
    echo "1,000원";
} elseif (x == 3) {
    echo "100원";
} elseif (x == 4) {
    echo "10원";
} else {
    echo "1원";
}

 

swtich case문을 사용하면 위 if 문을 간결하게 표시할 수 있습니다.

 

$x = 3;
switch ($x) {
    case 1: echo "10,000원"; break;
    case 2: echo "1000원"; break;
    case 3: echo "100원"; break;
    case 4: echo "10원"; break;
    default: echo "1원";
}

 

 

어때요? 아주 간결해졌죠? 의미가 확 와닿습니다. 수학식에서도 증명을 할 때 case라고 보통 사용하지 않습니까? 이처럼 if 문에서 범위가 아닌 같다(예: a == "red")는 내용만으로 표현해야한다면 if문보다 switch~case문이 더 직관적으로 코드를 작성할 수 있습니다.

 

다음 코드는 w3schools.com에 있는 예제입니다.

 

$favcolor = "red";

switch ($favcolor) {
    case "red":
        echo "Your favorite color is red!";
        break;
    case "blue":
        echo "Your favorite color is blue!";
        break;
    case "green":
        echo "Your favorite color is green!";
        break;
    default:
        echo "Your favorite color is neither red, blue, or green!";
}

 

 

위 예제가 어렵지 않을 것입니다. if 문으로 표현하면 다음과 같습니다.

 

 

$favcolor = "red";

if ($favcolor == "red") {
    echo "Your favorite color is red!";
}
elseif ($favcolor == "blue") {
    echo "Your favorite color is blue!";
}
elseif ($favcolor == "green") {
    echo "Your favorite color is green!";
}
else {
    echo "Your favorite color is neither red, blue, or green!";
}

 

 

어떤 코드가 더 직관적인가요? switch case문으로 표현할 수 있다면 코드를 좀 더 간결하게 만들 수 있습니다.

 

앞서 break문을 일부러 넣지 않는다고 표기했는데요, 예를 들어 에러를 처리할 때 사용자에게 숨기고 일반적인 메시지를 보내고 싶다면 다음과 같이 표현할 수 있습니다.


에러 1번: id가 존재하지 않음
에러 2번: id는 존재하나 비밀번호가 틀림
에러 3번: 비밀번호 변경 6개월
에러 4번: 차단된 아이피입니다.
나머지 에러는 관리자에게 연락 요망

 

 

$errorCode = inputIDnPWD("blog", "money"); // id: blog, password: money
switch (errorCode) {
    case 1:
    case 2:
        echo "아이디가 없거나 비밀번호가 맞지 않습니다.";
        break;
    case 3:
        echo "비밀번호를 변경하세요.";
        break;
    case 4:
        echo "차단된 아이피입니다.";
        break;
    default:
        echo "서비스 이용불가: 관리자에게 연락하세요! 감사합니다.";
}

 

 

실무에서는 위 예문처럼 필요에 의해서 break 문을 일부러 생략하는 경우도 있습니다. 어때요? switch case문 할만하셨나요?

 

다음 시간에는 While문에 대해 살펴보겠습니다.

 

수고하셨습니다.