導入
「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 の値を 1 や 5、9 に変えて、表示される曜日名がどう変わるか確かめましょう。
演習
変数 $signal("red" "yellow" "green" のいずれか)を match で判定し、red→"止まれ"、yellow→"注意"、green→"進め" と表示してください。
ヒント1を見る
$action = match ($signal) { "red" => "止まれ", ... }; の形です。
ヒント2を見る
文字列も候補にできます。default も付けておくと安全です。