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 중국어 웹사이트의 기타 관련 기사를 참조하세요!