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)
'PHP' 카테고리의 다른 글
[PHP] nullsafe 연산자 (?->): null 체크 지옥에서 벗어나기 (0) | 2025.09.12 |
---|---|
[PHP] strtotime()으로 자연어 날짜 처리하기 (0) | 2025.09.09 |
[PHP] strpos(), strrpos()로 특정 문자의 위치 찾기 (1) | 2025.09.01 |
[PHP] 일반 배열보다 빠르고 메모리를 적게 쓰는 SplFixedArray (0) | 2025.08.31 |
[PHP] parse_str()과 http_build_query()로 쿼리 스트링 파싱 및 생성하기 (1) | 2025.08.29 |