📖 Match
switch ~ case문과 비슷하지만 좀 더 정형화된, 더 엄격한 조건 판단문이다.
※ 다만, Match 함수는 PHP 8.0.0 이상 버전에서만 사용 가능하니 주의해주시기 바랍니다.
오늘은 PHP Match 함수에 대해서 알아볼까 합니다.
기존에 작업을 진행하면서 switch ~ case문을 많이 사용을 했었던 기억들이 있습니다.
<?php
switch ($str) {
case 'Velog':
$result = 'Write Velog';
break;
case 'PHP':
case '객체지향':
$result = 'PHP Love';
break;
default: '';
}
?>
switch ~ case를 쓴다면 switch에 넣어줄 파라미터, 그 안에 들어가는 case 조건들....
하지만 이런 switch ~ case도 PHP에서는 느슨한 약타입 언어로 인해
0 == "0.0" Result: (True)
81 == " 81" Result: (True)
0 == "0" Result: (True)
위의 예제의 내용도 True로 결과값을 내주는 엄청난 광경을 볼 수 있다.
switch ~ case로는 좀 더 정확하게 잡을 수가 없는데.....
아, 그럼 꼼꼼하게 타입형까지 체크할려면 ===를 쓰면 되지 않을까?
이런 느낌이 들텐데 그럼 ===를 사용하는 switch ~ case같은 형식을 띤
느낌의 내장 함수 같은 건 없을까?
그래서 준비한 Match !!! 🦕🦕🦕
match는 switch ~ case보다 더 엄격하게, 표현도 철저해야하는 차이점이 있습니다.
만약, 위의 예제의 내용을 match로 옮기게 되면...
<?php
echo match ($str) {
'Velog' => 'Write Velog',
'PHP', '객체지향' => 'PHP Love',
Default => ''
};
?>
기존의 swtich ~ case보다 좀 더 읽기도 편하고
match의 분기는 1행의 식만 서포트 하기 때문에 break도 필요가 없어지는 장점이 있다.
그리고 match에서 가장 좋았던 부분은 식이기 때문에,
결과를 반환하거나, 변수를 보존할 수 있다라는 매우 크나큰 장점이 있습니다.
<?php
$result = NULL;
switch ($str) {
case 'Velog':
$result = 'Write Velog';
break;
case 'PHP':
case '객체지향':
$result = 'PHP Love';
break;
default: NULL;
}
?>
switch ~ case문은 각 분기마다 지정한 변수에 직접 값을 일일이 다 대입을 해야 했지만
<?php
$result = match ($str) {
'Velog' => 'Write Velog',
'PHP', '객체지향' => 'PHP Love',
Default => NULL
};
?>
match를 쓰면 일일이 대입을 하지 않고 조건식이 엄청 간단해진다.
※ PHP 8.0.0 버전 이상부터 사용할 수 있다는 점만 유의한다면 매우 유용하게 사용할 수 있습니다!
'언어 & 프레임워크 > PHP' 카테고리의 다른 글
[Laravel] window 환경에서 프로젝트 생성 시 에러 (0) | 2022.11.09 |
---|---|
PHP 스프레드 연산자 (0) | 2022.11.09 |
페이징 성능 개선 - No Offset (0) | 2022.09.26 |
PHP PDO json_encode strings as numbers 반환 오류 (2) | 2022.09.20 |
PHP 오토로드 (AutoLoad) (0) | 2022.09.20 |