第4章 制御構文 / 第3回 模擬試験

次のコードの実行結果として正しいものはどれか。 ```php $score = 75; $result = match (true) { $score >= 90 => "A", $score >= 70 => "B", $score >= 50 => "C", default => "D", }; print $result; ```

A
B 正解
C
D
解説
`match (true) { ... }`は、各アームの条件式を上から順に評価し、最初に`true`になったアームの値を返す書き方です(`switch`のフォールスルーとは異なり、マッチしたアームの処理だけが実行されます)。 `$score = 75`の場合、`$score >= 90`は`false`、次の`$score >= 70`は`75 >= 70`で`true`となるため、そこで評価が止まり`"B"`が返されます(以降の`$score >= 50`などは評価されません)。 例: ``` $score = 75; $result = match (true) { $score >= 90 => "A", $score >= 70 => "B", $score >= 50 => "C", default => "D", }; print $result; // B ``` この`match (true)`パターンは、範囲による条件分岐を`switch`より簡潔かつ厳密な比較で書ける便利なイディオムです。 (参照: 独習PHP 第4版 第4章 制御構文 4.1.9節 match式 p.136〜138)

あわせて読みたい解説記事