本文へスキップ
BecomeCoder

PHPコース · 第2章 条件分岐と繰り返し · レッスン8

match ― 値で振り分ける

ブラウザで完結

導入

「1なら月曜、2なら火曜…」のように、1つの値をいくつもの候補と照らし合わせて振り分けたいことがあります。if/elseif を並べてもよいですが、match(マッチ)を使うとすっきり書けます。

説明

match は、値を候補と ===(厳密)で照合し、一致した枝の結果を返します。PHP 8 で入った新しい書き方です。

<?php
$day = 3;

$name = match ($day) {
    1 => "月曜",
    2 => "火曜",
    3 => "水曜",
    4, 5 => "平日の後半",   // カンマで複数の候補をまとめられる
    default => "週末など",   // どれにも当てはまらないとき
};

echo "今日は{$name}です\n";

match (値) { 候補 => 結果, ... } の形で、各枝は 候補 => 結果 と書きます。match は結果を返すので、$name = match(...) のように変数に受け取れます。default はどの候補にも一致しなかったときの受け皿です。

(よく似た switch 文もありますが、match の方が短く安全なので、まずは match を使えれば十分です。)

やってみよう

$day の値を 159 に変えて、表示される曜日名がどう変わるか確かめましょう。

演習

変数 $signal"red" "yellow" "green" のいずれか)を match で判定し、red"止まれ"yellow"注意"green"進め" と表示してください。

ヒント1を見る

$action = match ($signal) { "red" => "止まれ", ... }; の形です。

ヒント2を見る

文字列も候補にできます。default も付けておくと安全です。

実際に動かしてみよう

下のエディタにPHPを書いて「実行」を押すと、ブラウザ内で動く本物のPHP(php-wasm)で出力が表示されます。コードは必ず <?php で書き始めます。本文の例をそのまま試したり、書き換えたりしてみましょう(初回だけPHPの読み込みに少し時間がかかります)。

PHP — ブラウザ内で実行

ブラウザ内で動く本物のPHP(php-wasm / PHP 8.4)を読み込みます(初回のみ読み込みに少し時間がかかります)。
スクロールして表示された時点でも自動で読み込まれます。