본문 바로가기
PHP

[PHP] switch 문을 대체하는 match 표현식

by teamnova 2025. 9. 5.
728x90

안녕하세요. 

오늘은 switch 문을 대체하는 match 표현식 에 대해 알아보겠습니다. 

 

PHP 8.0부터 switch 문을 더욱 안전하고 간결하게 사용할 수 있는 match 표현식이 등장했습니다.

switch와 비슷해 보이지만, 몇 가지 핵심적인 차이점이 있습니다.

 

 

  • 엄격한 타입 비교: switch가 == (느슨한 비교)를 사용하는 반면, match는 === (엄격한 비교)를 사용해 타입까지 정확하게 비교함. 이로 인해 예상치 못한 버그 줄일 수 있음
  • 값을 반환하는 '표현식': match는 그 자체가 값을 반환할 수 있어, 결과를 변수에 바로 할당할 수 있음. 코드가 훨씬 간결해짐.
  • break가 필요 없음: 각 조건은 암시적으로 break가 걸려있어, 아래 조건으로 넘어가는 실수를 원천적으로 방지함.
  • 여러 조건 동시 처리: 쉼표(,)를 이용해 여러 값을 하나의 조건으로 묶을 수 있음.

 

switch와 match의 차이

 

switch 문

<?php

$statusCode = 200;
$message = '';

switch ($statusCode) {
    case 200:
    case 201:
        $message = '성공 (Success)';
        break;
    case 400:
        $message = '잘못된 요청 (Bad Request)';
        break;
    case 404:
        $message = '찾을 수 없음 (Not Found)';
        break;
    default:
        $message = '알 수 없는 상태 코드';
        break;
}

echo $message;

?>

 

match 표현식

<?php

$statusCode = 200;

$message = match ($statusCode) {
    200, 201 => '성공 (Success)',
    400 => '잘못된 요청 (Bad Request)',
    404 => '찾을 수 없음 (Not Found)',
    default => '알 수 없는 상태 코드',
};

echo $message;

?>

 

 

실행결과 (swich와 match 예시 모두 결과 같음)

성공 (Success)