>백엔드 개발 >PHP8 >PHP8 새로운 기능 일치 표현식에 대한 자세한 설명

PHP8 새로운 기능 일치 표현식에 대한 자세한 설명

Guanhui
Guanhui앞으로
2020-07-14 16:00:154585검색

PHP8 새로운 기능 일치 표현식에 대한 자세한 설명

PHP8 alpha2가 최근에 새로운 키워드가 도입되었습니다: match. 이 키워드의 기능은 스위치와 다소 유사합니다.

이거 좀 재미있을 것 같고, 단어 일치도 너무 좋은데 어떻게 하는 걸까요?

과거에는 다음과 유사한 값 변환 작업을 위해 스위치를 자주 사용할 수 있었습니다.

function convert($input) {
    switch ($input) {
        case "true":
            $result = 1;
        break;
        case "false":
            $result = 0;
        break;
        case "null":
            $result = NULL;
        break;
    }
    return $result;
}

그런 다음 match 키워드를 사용하면 다음과 같이 될 수 있습니다.

function converti($input) {
    return match($input) {
        "true" => 1,
        "false" => 0,
        "null" => NULL,
    };
}

switch와 비교하면 match는 값을 직접 반환합니다. , 더 이상 위 스위치 예제의 $result 중간 변수가 필요하지 않습니다.

그리고 스위치의 여러 케이스와 블록 하나와 유사하게 다음과 같이 여러 일치 조건을 함께 작성할 수도 있습니다.

return match($input) {
    "true", "on" => 1,
    "false", "off" => 0,
    "null", "empty", "NaN" => NULL,
};

스위치와는 다르다는 점에 유의해야 합니다. 스위치를 사용할 때 자주 접할 수 있습니다. 이 이상한 문제:

$input = "2 person";
switch ($input) {
    case 2:
        echo "bad";
    break;
}

실제로는 bad가 출력되는 것을 볼 수 있습니다. 이는 스위치가 느슨한 비교(==)를 사용하기 때문입니다. Match에서는 이 문제가 발생하지 않습니다. 이는 엄격한 비교(===)를 사용하므로 값과 유형이 완전히 동일해야 합니다.

또한 입력이 일치의 모든 조건에 의해 충족될 수 없는 경우 일치는 UnhandledMatchError 예외를 발생시킵니다:

function convert($input) {
    return match($input) {
        "true" => 1,
    };
}
convert("false");

다음을 얻습니다:

Fatal error: Uncaught UnhandledMatchError: Unhandled match value of type string

이렇게 하면 채우지 않을 것에 대해 걱정할 필요가 없습니다. 모든 경기 조건은 예측할 수 없습니다.

추천 튜토리얼: "PHP8"

위 내용은 PHP8 새로운 기능 일치 표현식에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 laruence.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제