PHP 매치 (Match)

Neptunere·2022년 4월 3일
0

PHP

목록 보기
2/2
post-thumbnail

📖 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 버전 이상부터 사용할 수 있다는 점만 유의한다면 매우 유용하게 사용할 수 있습니다!

profile
https://jeonghyeonmun.develofolio.com

0개의 댓글