PHP8 alpha2 がリリースされ、最近新しいキーワード match が導入されました。このキーワードの機能は switch に似ています。
これはちょっと面白いと思います。単語の一致も非常に優れていますが、これは何をするのでしょうか?
以前は、switch を使用して、次のような値の変換作業を行うことがよくありました。
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 は値を直接返すため、上記の switch の例の $result 中間変数は必要ありません。
そして、switch と 1 つのブロックの複数の場合と同様に、次のように複数の一致条件を一緒に記述することもできます。
return match($input) { "true", "on" => 1, "false", "off" => 0, "null", "empty", "NaN" => NULL, };
switch とは異なることに注意してください。以前は、switch を使用するときに次のような奇妙な問題に遭遇することがありました:
$input = "2 person"; switch ($input) { case 2: echo "bad"; break; }
実際には bad が出力されることがわかりますが、これは switch が緩い比較 (==) を使用しているためです。 Match ではこの問題は発生せず、厳密な比較 (===) が使用されるため、値と型が完全に一致する必要があります。
また、入力が一致のすべての条件を満たすことができない場合、一致は UnhandledMatchError 例外をスローします:
function convert($input) { return match($input) { "true" => 1, }; } convert("false");
は次のように取得します:
Fatal error: Uncaught UnhandledMatchError: Unhandled match value of type string
不完全な一致条件によって引き起こされる予期しないエラーを心配する必要はありません。
推奨チュートリアル:「PHP8」
以上がPHP8の新機能match式の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。