제어문 - SWITCH 문

if문은 참/거짓의 둘 중의 하나를 선택해서 수행하는 반면, switch 여러가지 중에서 하나를 선택합니다.

switch를 사용하기 위해서 선언된 변수의 값이 주어진 여러가지 case중에서 참인 것을 찾아 선택합니다.

변수 $a = 3이라고 선언하면 해당되는 case가 선택되어 해당 문장을 수행하는 과정은 아래와 같습니다.

<?php
    echo "변수 \$a=3을 선언할 때 switch 문 활용<br />";

    $a = 2;

    switch ($a) {
        case 0:
            echo "변수 \$a는 숫자 0 입니다.... <b> case 0: 적용 </b><br />";
            break;

        case 1:
            echo "변수 \$a는 숫자 1 입니다.... <b> case 1: 적용 </b><br />";
            break;

        case 2:
            echo "변수 \$a는 숫자 2 입니다.... <b> case 2: 적용 </b><br />";
            break;

        case 3:
            echo "변수 \$a는 숫자 3 입니다.... <b> case 3: 적용 </b><br />";
            break;

        case 4:
            echo "변수 \$a는 숫자 4 입니다.... <b> case 4: 적용 </b><br />";
            break;

        default:
            echo "변수 \$a = {$a}는 0,1,2,3 이외의 숫자입니다.<br />";
    }
?>
php image

$a의 값을 2로 입력하고 그리고 switch의 조건으로 $a를 설정하면,

그렇게 해서 case 1, case 2, case 3 case 4를 지정해준다면

switch에 부합하는것은 2이므로 case 2의 실행문들이 실행됩니다.

각 case에 break가 있는데 break는 그 조건이 부합할때 위의 실행문을 실행하고 break문을 만나면 switch문을 빠져나옵니다.

만약 break를 선언해 주지 않았다면 아래와 같은 결과가 발생합니다.

php image

break문이 선언되지 않았기 때문에 2의 조건에 부합한후 빠져나오지 않고 아래의 case들을 모두 실행하게 됩니다.

위의 예문을 if문으로 구현한다면 아래와 같이 된다.

<?php
    echo "switch문을 if문으로 변환하기 <br />";
    echo "<hr />";

    $a = 3;

    if($a == 0)
        echo "변수 $a는 숫자 0 입니다 <br>";
    else if ($a == 1)
        echo "변수 $a는 숫자 1 입니다 <br>";
    else if ($a == 2)
        echo "변수 $a는 숫자 2 입니다 <br>";
    else if($a == 3)
        echo "변수 $a는 숫자 3 입니다 <br>";
    else
        echo "0 1 2 3 전부 아닙니다.";
?>
php image

다음은 switch문의 활용입니다.

<?php
    echo "switch 문을 이용하여 월의 날짜 표시 <br /><hr />";

    $mon = 2;

    switch ($mon) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
        echo "{$mon}월은 31일까지 있습니다.<br />";
        break;

        case 4:
        case 6:
        case 9:
        case 11:
        echo "{$mon} 월은 30일까지 있습니다.<br />";
        break;

        case 2:
        echo "{$mon} 월은 28일 (평년기준)까지 있습니다.<br />";
        break;

        default:
        echo "{$mon}는 월을 나타내는 1~12이외의 숫자입니다.<br />";
    }
?>
php image

switch문도 크거나 작거나 등의 연산자를 조건으로 사용할 수 있습니다.
다음의 예제처럼요.

<?php
    echo "switch 문의 조건을 넣기<br /><hr />";

    $age = 23;

    switch ($age) {
        case ($age >= 10 && $age <= 19):
            echo "10대 입니다.";
            break;

        case ($age >= 20 && $age <= 29):
            echo "20대 입니다.";
            break;

        case ($age >= 30 && $age <= 39):
            echo "30대 입니다.";
            break;

        case ($age >= 40 && $age <= 49):
            echo "40대 입니다.";
            break;

        case ($age >= 50 && $age <= 59):
            echo "50대 입니다.";
            break;

        case ($age >= 60 && $age <= 69):
            echo "60대 입니다.";
            break;

        case ($age >= 70 && $age <= 79):
            echo "70대 입니다.";
            break;

        case ($age >= 80 && $age <= 89):
            echo "80대 입니다.";
            break;

        case ($age >= 90 && $age <= 99):
            echo "90대 입니다.";
            break;

        default:
        echo "아가 PHPer군요.";
    }
?>