カテゴリ: PHP 更新日: 2026/07/14

PHPのmatch文をやさしく解説!初心者でもわかるPHP8の新機能

PHP の match 文(PHP8 の新機能)
PHP の match 文(PHP8 の新機能)

先生と生徒の会話形式で理解しよう

生徒

「PHPのバージョン8で新しく追加されたmatch文って何ですか?」

先生

「PHP8ではmatchという新しい構文が追加されて、switch文よりも便利に条件分岐が書けるようになりましたよ。」

生徒

「条件分岐ってifとかswitchのことですよね?それと何が違うんですか?」

先生

「いい質問ですね!それでは、PHPのmatch文の使い方を基本からしっかり解説していきましょう。」

1. PHPのmatch文とは?新しい条件分岐の書き方

1. PHPのmatch文とは?新しい条件分岐の書き方
1. PHPのmatch文とは?新しい条件分岐の書き方

PHPのmatch文は、PHP8から導入された「条件分岐をより簡潔かつ安全に書くための新しい仕組み」です。これまではif文やswitch文が主流でしたが、match文の登場により、コードの読みやすさとプログラムの正確性が格段に向上しました。

プログラミング未経験の方でも直感的に理解できるよう、まずは身近な「自動販売機のボタンと飲み物」の関係に例えたサンプルを見てみましょう。


// 自動販売機のボタン(1:コーラ、2:お茶、3:水)
$buttonNumber = 2;

// 押されたボタンに対応する飲み物を「match文」で決める
$drinkName = match($buttonNumber) {
    1 => "コーラ",
    2 => "お茶",
    3 => "水",
    default => "売切(対象外のボタン)"
};

echo "あなたが選んだのは「" . $drinkName . "」です。";

このコードでは、$buttonNumberが「2」なので、match文が瞬時に「お茶」を選び出し、変数$drinkNameにその結果を渡しています。このように、「特定の条件に一致した値をそのまま受け取れる」のがmatch文の最大の特徴です。

従来のswitch文と比較したとき、具体的には以下の4つのメリットがあります:

  • ① 値をそのまま返せる: 式として評価されるため、上記のように変数に直接代入できます。
  • ② 厳密な比較(===): 数値の1と文字列の"1"を明確に区別して判定するため、バグが混入しにくくなります。
  • breakが不要: 書き忘れによる意図しない動作を防ぎ、記述量も減らせます。
  • ④ 網羅性のチェック: defaultを書かない場合に一致する条件がないとエラーを出すため、設定漏れを防げます。

一言でいうと、match文は「スッキリまとまってミスも防げる、進化版の条件分岐」。初心者こそ積極的に使いたい、非常にスマートな構文なのです。

2. PHPのmatch文:基本の書き方と初心者に優しい活用例

2. PHPのmatch文:基本の書き方と初心者に優しい活用例
2. PHPのmatch文:基本の書き方と初心者に優しい活用例

PHP 8.0から導入されたmatch文は、従来のswitch文をよりシンプルに、そして安全に記述できるように進化した構文です。プログラミングが初めての方でも、まずは「特定の条件にぴったり合うもの(マッチするもの)を探す仕組み」とイメージすればOKです。

まずは、日常の「信号機」を例に、最も基本的なプログラムを見てみましょう。


$color = "赤";

// 変数$colorの中身に「マッチ」するメッセージを選びます
$message = match($color) {
    "赤" => "止まれ",
    "青" => "進め",
    "黄" => "注意",
    default => "信号の色ではありません"
};

echo $message;

止まれ

このコードのポイントは、match($color)という記述です。これは「変数$colorの中身を見て、次のリストの中から一致するものを探してね」と指示しています。リストの最後にあるdefaultは、どの条件にも当てはまらなかった場合に選ばれる「その他」の役割を持っています。

match文は「値を返す」という特徴があるため、上記のようにそのまま変数($message)に結果を代入できるのが大きなメリットです。まるでパズルを完成させるように、シンプルで読みやすいコードが書けるようになります。

また、細かい点ですが、末尾にセミコロン(};)が必要な点に注意しましょう。これだけで条件分岐が驚くほどスッキリまとまります。

3. switch文とmatch文の違い:どっちを使うべき?

3. switch文とmatch文の違い:どっちを使うべき?
3. switch文とmatch文の違い:どっちを使うべき?

PHPにおいて、条件によって処理を分ける方法はいくつかあります。これまで主流だったswitch文と、PHP 8.0から登場したよりモダンなmatch文を比較してみましょう。初心者の方が特につまずきやすい「型の判定」に注目して解説します。

比較サンプル:数値と文字列の扱い

例えば、変数の中身が「数値の2」なのか「文字列の"2"」なのかを判定する場合、両者で結果が大きく変わります。


// 【従来の書き方】switch文
$number = 2; // 数値の2を代入
switch ($number) {
    case 1:
        $result = "1です";
        break;
    case "2": // 文字列の2を指定
        $result = "文字列の2と判定されました(緩い比較)";
        break;
    case 2:
        $result = "数値の2です";
        break;
    default:
        $result = "その他です";
        break;
}
echo $result; 
// 結果:文字列の2と判定されました(緩い比較)

// 【これからの書き方】match文
$number = 2; // 数値の2を代入
$result = match($number) {
    1 => "1です",
    "2" => "文字列の2です",
    2 => "数値の2です", // ここで正しく判定される
    default => "その他です"
};
echo $result;
// 結果:数値の2です
ここが重要!SEOでも注目の「厳密な比較」

従来のswitch文は「緩い比較(==)」を行うため、数値の2と文字列の"2"を同じものとして扱ってしまい、バグの原因になることがありました。

対してmatch文は、「厳密な比較(===)」を行います。値だけでなく「データ型」までしっかりチェックするため、より安全でミスが少ないコードを書くことができます。また、breakを書き忘れて意図しない処理が動く心配もありません。

プログラミング未経験の方は、まずは「より正確に中身をチェックしてくれるのがmatch文」と覚えておけば間違いありません。コードも短くスッキリ書けるため、2026年現在のモダンな開発現場ではmatch文の利用が推奨されています。

4. match文は「戻り値」をそのまま変数に入れられるのが最大のメリット!

4. match文は「戻り値」をそのまま変数に入れられるのが最大のメリット!
4. match文は「戻り値」をそのまま変数に入れられるのが最大のメリット!

PHP8から導入されたmatch文の最も画期的な点は、条件に応じた結果を「戻り値(返り値)」として直接受け取れることです。

これまでのswitch文では、結果を変数に入れるためにわざわざ各ケースの中で代入処理を書く必要がありましたが、match文ならコードが驚くほどスッキリします。プログラミング未経験の方でも直感的に理解しやすい、シンプルな書き換え例を見てみましょう。


$score = 85;

// match文の結果をそのまま $grade に代入
$grade = match(true) {
    $score >= 90 => "最高ランクのA評価です!",
    $score >= 80 => "合格ラインのB評価です!",
    $score >= 70 => "まずまずのC評価です。",
    default      => "もう少し頑張りましょう(D評価)"
};

echo $grade;

合格ラインのB評価です!

このコードでは、match(true)という書き方を使っています。これは「右側の条件が true(正しい)になるものを探してね」という指示です。上から順番に点数をチェックし、条件に当てはまった瞬間にその右側のメッセージを「戻り値」として $grade という箱(変数)に放り込んでくれます。

このように、「条件判定と変数への代入」を一行で完結できるのがmatch文の便利さ。if文を何個も並べるよりも読みやすく、書き間違いによるバグも防げるため、モダンなPHP開発では欠かせないテクニックとなっています。

5. match文で複数条件を効率よく判定する方法

5. match文で複数条件を効率よく判定する方法
5. match文で複数条件を効率よく判定する方法

PHPのmatch文を使っていると、「AまたはBの場合はこの処理」というように、複数の条件をひとまとめにして扱いたい場面が出てきます。実は、match文はカンマ区切りで条件を並べるだけで、直感的に複数条件を指定することが可能です。

例えば、占いアプリで「1, 2, 3はラッキー」と判定したい場合、わざわざ1つずつ書く必要はありません。未経験の方でも分かりやすい、シンプルなサンプルを見てみましょう。


$num = 2; // 判定したい数値

$text = match($num) {
    1, 2, 3 => "1から3のどれか(大当たり)です!",
    4, 5    => "4か5(中当たり)です",
    default => "それ以外(残念)です"
};

echo $text;

このように1, 2, 3 =>と記述するだけで、「1、または2、または3だったとき」というOR(または)の条件を簡単に作ることができます。以前のPHPで使われていたswitch文よりも、コードの記述量が格段に減り、読み間違い(バグ)を防ぎやすいのが最大のメリットです。

???? 初心者へのアドバイス:
「もし10個以上の大量の数値をチェックしたい」という場合は、match文にすべて書くとコードが長くなってしまいます。その場合はin_array()などの関数を使うのが正解ですが、3〜5個程度の条件をまとめるなら、このmatch文の書き方が最もスマートでSEO的にも「読みやすいコード」として推奨されます。

条件をスッキリまとめることで、後から見返したときにも「何をしているプログラムか」がひと目で分かるようになります。ぜひ活用してみてください。

6. match文を使った実践例!ユーザー入力で応用してみよう

6. match文を使った実践例!ユーザー入力で応用してみよう
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文の構造がとても自然に感じられますよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

PHPのmatch文とは何ですか?初心者にもわかるように教えてください。

PHPのmatch文は、PHP8から導入された新しい条件分岐の構文で、従来のswitch文よりもシンプルでわかりやすく書けるのが特徴です。match文は値を返すことができ、厳密な比較(===)で条件を評価する点が初心者にも安心です。

PHPのmatch文とswitch文の違いは何ですか?

PHPのmatch文とswitch文の違いは、match文が値を返すことができること、break文が不要であること、厳密な一致(===)で比較されること、defaultの書き方が異なることなどが挙げられます。これらにより、PHPのコードがすっきりと読みやすくなります。

PHP8のmatch文ではbreakは必要ないのですか?

はい、PHP8のmatch文ではbreakを記述する必要がありません。各条件ごとに値を返す形式になっているため、switch文のようにbreakを忘れて意図しない動作になる心配がありません。
コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

PHP の制御構造の記事一覧へ
新着記事
New1
Python
Pythonの変数とは?定義方法とデータ型を初心者向けに解説
New2
PHP
PHP の型変換を完全ガイド!初心者でもわかる明示的変換・自動変換
New3
PHP
PHPのCSVファイルの読み書きと文字列処理を基礎から解説!初心者向けガイド
New4
PHP
PHPのメモリ管理と変数の破棄方法をやさしく解説!初心者でもわかるunsetの使い方
人気記事
No.1
Java&Spring記事人気No1
Python
PythonでAPIリクエストを送信する方法を完全解説!requestsライブラリで簡単API通信
No.2
Java&Spring記事人気No2
Python
Pythonで経過時間を計測する方法を完全解説!初心者でもわかる time.perf_counter() と time.sleep()
No.3
Java&Spring記事人気No3
Python
Pythonのコンストラクタ(__init__)の使い方!初心者でもわかるオブジェクトの初期化
No.4
Java&Spring記事人気No4
PHP
PHPの配列をソートする方法!sort, rsort, asort, ksortの使い方を丁寧に解説します!
No.5
Java&Spring記事人気No5
PHP
PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド
No.6
Java&Spring記事人気No6
Python
Pythonのタプルの要素を変更できない理由とその回避策を初心者向けに解説
No.7
Java&Spring記事人気No7
ChatGPT
ChatGPTでPythonコードを作成する方法!プロンプトの書き方と質問例を解説
No.8
Java&Spring記事人気No8
Python
Pythonのrequestsライブラリ完全入門!HTTPリクエストの送り方を初心者向けにやさしく解説