PHP 스위치 문

10638 단어 phpwebdevbeginners
이전 기사에서 우리는 if 문에 대해 논의했습니다. 여기서 다양한 시나리오를 처리하려면 여러 elseif 문이 있을 수 있지만 switch 문으로 바꾸는 것을 고려해야 하는 시점에 도달합니다.

$myVar = 'green';

if ($myVar === 'red') {
    echo 'It is red';
} elseif ($myVar === 'blue') {
    echo 'It is blue';
} elseif ($myVar === 'green') {
    echo 'It is green';
}


이것은 switch 문을 사용하여 다시 작성할 수 있습니다. 일치시키려는 각 조건에는 일치시키려는 변수를 전달하는 경우가 있습니다. 케이스 안에 조건이 일치하면 실행할 코드를 넣습니다. 그런 다음 중단을 추가해야 합니다. 그렇지 않으면 코드가 나머지 switch 문의 일치 항목을 계속 확인합니다.

$myVar = 'green';

switch ($myVar) {
    case 'red':
        echo 'It is red';
        break;
    case 'blue':
        echo 'It is blue';
        break;
    case 'green':
        echo 'It is green';
        break;
}


기본 케이스



switch 문의 매우 유용한 기능은 다른 경우가 일치하지 않는 경우 기본값을 허용한다는 것입니다. 때때로 당신은 변수가 무엇인지 알지 못하고 이 극단적인 경우를 포착할 수 있습니다. 추가 코드 실행을 의도적으로 중지하기 위해 예외를 throw하는 데 사용할 수도 있습니다.

$myVar = 'orange';

switch ($myVar) {
    case 'red':
        echo 'It is red';
        break;
    case 'blue':
        echo 'It is blue';
        break;
    case 'green':
        echo 'It is green';
        break;
    default:
        throw new Exception('It is not a matching colour');
}

// Fatal error: Uncaught Exception: It is not a matching colour


여러 대소문자 일치



때로는 일치하는 여러 사례에 대해 동일한 작업을 수행하고 싶을 때가 있습니다. if 문을 사용하려면 코드를 여러 번 반복하거나 조건에 or( || )를 사용해야 합니다.

$myVar = 'green';

if ($myVar === 'red' || $myVar === 'green') {
    echo 'It is red or green';
}


switch 문에서 여러 경우를 차례로 나열한 다음 다음에 중단과 함께 실행할 코드를 추가하여 이 작업을 쉽게 수행할 수 있습니다.

$myVar = 'green';

switch ($myVar) {
    case 'red':
    case 'green':
        echo 'It is red or green';
        break;
    case 'blue':
        echo 'It is blue';
        break;
}


스위치 케이스에서 복귀



때로는 switch 문에서 break가 필요하지 않습니다. 이것은 switch 문에서 직접 반환할 때입니다. 아래 예제에는 일치하는 대소문자의 결과를 반환하는 함수에 switch 문이 있습니다.

function findTheColour($colour)
{
    switch ($colour) {
        case 'red':
            return 'It is red';
        case 'blue':
            return 'It is blue';
        case 'green':
            return 'It is green';
        default:
            return 'It does not match';
    }
}

echo findTheColour('green'); // It is green


일부 개발자(나와 같은)는 코드를 분리하는 것이 좋기 때문에 switch 문에 중단이 없는 것이 이상해 보인다고 생각한다는 것을 알고 있습니다.

대체 구문



if 문과 마찬가지로 대괄호 대신 콜론을 사용하고 끝 스위치로 스위치를 끝낼 수도 있습니다.

switch ($myVar):
    case 'red':
        echo 'It is red';
        break;
    case 'blue':
        echo 'It is blue';
        break;
    case 'green':
        echo 'It is green';
        break;
endswitch;


원한다면 대소문자 뒤에 콜론 대신 세미콜론을 사용할 수도 있습니다.

case 'red';


대신 배열 사용



어떤 사람들은 약간 장황하게 보일 수 있기 때문에 switch 문을 사용하는 것을 좋아하지 않습니다. 간단한 시나리오인 경우 옵션을 제공하기 위해 어레이를 사용하는 잠재적인 대안이 있습니다.

$colours = [
    'red' => 'It is red',
    'green' => 'It is green',
    'blue' => 'It is blue',
];

$myVar = 'green';

echo $colours[$myVar]; //It is green


위의 내용은 빨간색, 녹색 또는 파란색에 대해 잘 작동하지만 주황색과 같은 알 수 없는 색상인 경우 정의되지 않은 인덱스 오류가 발생합니다.

null 병합 연산자(PHP 7.0 이상)를 사용하여 이 오류를 포착하고 기본 응답을 반환할 수 있습니다.

echo $colours[$myVar] ?? 'It does not match';


성냥



PHP 8.0은 match 문을 도입했습니다. 더 짧은 구문을 제공하고 값을 반환합니다. Brent의 match와 switch on의 차이점에 대한 훌륭한 기사가 있습니다.

좋은 웹페이지 즐겨찾기