はじめに
PHP 8で導入された match
式は、従来の switch
文に比べて多くのメリットがあります。
型の厳密比較や式としての値返却など、知っておくと開発効率がぐっと上がります。
この記事では、実際のコード例を交えながら match
と switch
の違いをわかりやすく解説します。
目次
基本コード例
<?php
declare(strict_types=1);
error_reporting(-1);
$v = 2;
$r = match ($v) {
'1' => '1st',
'2a' => '2nd...?',
'2' => '2nd',
'3' => '3rdt',
default => 'any',
};
echo $r; // 出力: any
$v
は整数2
match
は型まで厳密に比較するため、文字列'2'
とはマッチせずdefault
が選ばれます。
match と switch の比較表
特徴 | switch | match |
---|---|---|
返り値 | なし(必要なら break で制御) | 式として値を返せる(変数に代入可能) |
型の比較 | ゆるい比較 (== ) | 厳密比較 (=== ) |
複数値のマッチ | case 1: case 2: のように書く | 1, 2 => '値' のようにまとめて書ける |
break の必要性 | 必須 | 不要 |
default の扱い | 任意、後ろに書く | 任意、最後に書く |
書き方の簡潔さ | 冗長になりやすい | 1行で簡潔、読みやすい |
まとめ
match
は 式なので値を返して変数に代入可能。- 型まで厳密に比較するため、意図しないマッチを防げる。
switch
に比べてコードがスッキリ。- フォールスルーの心配がないのでバグ防止に有効。