PHPのmatch文をやさしく解説!初心者でもわかるPHP8の新機能
生徒
「PHPのバージョン8で新しく追加されたmatch文って何ですか?」
先生
「PHP8ではmatchという新しい構文が追加されて、switch文よりも便利に条件分岐が書けるようになりましたよ。」
生徒
「条件分岐ってifとかswitchのことですよね?それと何が違うんですか?」
先生
「いい質問ですね!それでは、PHPのmatch文の使い方を基本からしっかり解説していきましょう。」
1. PHPのmatch文とは?新しい条件分岐の書き方
PHPのmatch文は、PHP8から使えるようになった新しい条件分岐の構文です。これまでのswitch文と似ていますが、以下のような違いがあります:
- ① 値を返すことができる
- ② 各ケースが厳密な比較(===)で評価される
- ③
breakが不要 - ④
defaultではなくdefault:の代わりにdefault =>を使う
初心者にもわかりやすくいうと、「match文」はスッキリして読みやすい「分岐の早見表」のようなものです。
2. match文の基本的な書き方と例
ここでは、簡単な例を使ってmatch文の基本形を学びましょう。
$color = "赤";
$message = match($color) {
"赤" => "止まれ",
"青" => "進め",
"黄" => "注意",
default => "信号の色ではありません"
};
echo $message;
止まれ
この例では、変数$colorの値に応じて、$messageに文字列を代入しています。matchの各行は「キーと値」のセットのように見えますよね。
3. switch文との違いを比較してみよう
今までよく使われてきたswitch文とmatch文を比べてみましょう。
// switch文
$number = 2;
switch ($number) {
case 1:
$result = "1です";
break;
case "2":
$result = "2です";
break;
default:
$result = "その他です";
break;
}
echo $result;
// match文
$number = 2;
$result = match($number) {
1 => "1です",
"2" => "文字列の2です",
2 => "数値の2です",
default => "その他です"
};
echo $result;
数値の2です
ポイント: matchは「厳密な一致(===)」で判断するので、文字列の"2"と数値の2は別物として扱われます。
4. match文は戻り値として使えるのが便利!
match文は式(しき)として使えるため、そのまま変数に代入できます。これがswitchにはない大きな特徴です。
$score = 85;
$grade = match(true) {
$score >= 90 => "A",
$score >= 80 => "B",
$score >= 70 => "C",
default => "D"
};
echo $grade;
B
このように、trueを使って条件式を評価することで、if文のように書ける裏ワザ的な使い方も可能です。
5. match文の注意点!複数条件にマッチさせたいとき
match文は、複数の値を同時に比較することはできません。たとえば「1 または 2 または 3」というような書き方はできないため、in_array関数やif文を使うほうが適切な場合もあります。
$val = 2;
$message = match($val) {
1 => "一番",
2 => "二番",
3 => "三番",
default => "その他"
};
ただし、「同じ結果を返す条件」があるなら、以下のようにまとめることはできます。
$num = 1;
$text = match($num) {
1, 2, 3 => "1から3のどれかです",
4 => "4です",
default => "その他です"
};
1から3のどれかです
6. match文を使った実践例!ユーザー入力で応用してみよう
実際のアプリケーションでは、ユーザーの入力に応じて処理を変える場面が多くあります。たとえば、選択肢から都道府県を選んで、その地方を表示する処理を考えてみましょう。
$pref = "福岡";
$region = match($pref) {
"北海道", "青森", "秋田" => "北海道・東北地方",
"東京", "神奈川", "千葉" => "関東地方",
"大阪", "京都", "兵庫" => "近畿地方",
"福岡", "佐賀", "長崎" => "九州地方",
default => "その他の地域"
};
echo $region;
九州地方
このように、match文は複数の値をまとめて管理したいときにも、とても見やすくて便利です。
まとめ
PHPのmatch文は、PHP8で導入された便利な条件分岐の構文であり、これまでのswitch文よりも直感的で明確な記述ができるのが特徴です。とくに厳密比較による正確な判定、戻り値として直接使える点、そして複数の値を一行でまとめられる点は、実践的な開発において大きな利点となります。現代のPHP開発では、読みやすさや保守性が非常に重視されるため、match文のようなシンプルで誤解の少ない構文は、多くの場面で活躍します。本文で紹介した基本構文やswitch文との違いを理解することで、初心者の方でもより正確な条件分岐が書けるようになります。 さらに、実際の開発環境ではユーザー入力をもとに処理を分岐したり、大量の値を整理して判定したりする場面が多くあります。そうしたとき、match文の構造化された記述は非常に見やすく、複数人で作業する開発現場でも役立ちます。また、match文とtrueを組み合わせた条件式の評価は、if文と似た柔軟な応用ができ、実務でよく利用されるテクニックの一つです。これらを理解しておくことで、コードの冗長さを避けられ、よりスマートなロジック設計が可能になります。 例えば下記のように、本文と同じスタイルで書かれたサンプルコードでは、match文を使って季節を返す簡単な処理を記述しています。実際のPHPアプリケーションでも応用できる書き方なので、ぜひ練習に取り入れてみてください。
$season = "春";
$message = match($season) {
"春" => "ぽかぽかした季節です",
"夏" => "海や花火が楽しい季節です",
"秋" => "紅葉が美しい季節です",
"冬" => "寒さが厳しい季節です",
default => "季節が判定できません"
};
echo $message;
このように、match文は値を返すシンプルな構文として扱えるため、複雑な条件式を整理したい場面でもスムーズに使えます。文章で説明した基本や応用例を繰り返し確認することで、自然とコードの理解が深まり、より高度な条件分岐へも応用できるようになります。PHP8以降は、機能の進化とともに開発効率の向上が求められる時代であり、match文はその中でも特に重要な要素です。基礎を押さえつつ、実践の中で繰り返し使っていくことで、扱いに慣れていくでしょう。 また、開発者が知っておくべきポイントとして、match文はstrict比較であるため、型の違いによる意図しない評価が起こりにくく、誤判定を防げる点があります。これはフォーム入力や外部APIとの連携など、扱うデータが多岐にわたる場面で特に有効です。こうした特性を理解したうえで使い分けることで、より堅牢で信頼性の高いアプリケーションが作れるようになります。今回の内容がPHP学習の大きな一歩となり、今後の開発にも役立つ知識として活用していただければ幸いです。
生徒
「今日のmatch文の説明で、一番便利だと思ったところはどこですか?」
先生
「やはり、戻り値として直接使える点ですね。switch文よりもコードが短くなりやすいのが魅力です。」
生徒
「厳密な比較で判定してくれるのも安心できますね。型の違いで誤判定が起きにくいのは良いと思いました。」
先生
「その通りです。特にフォーム入力など型が混ざりやすい場面では、match文の特性が役立ちます。」
生徒
「応用例の地方判定のコードもわかりやすかったです。同じ結果を返す条件をまとめられるのが便利でした。」
先生
「実践ですぐ使える書き方なので、ぜひ他の処理にも応用してみてください。慣れてくるとmatch文の構造がとても自然に感じられますよ。」