第4章 制御構文 / 第1回 模擬試験
PHPの条件分岐に関する次の記述のうち、誤っているものはどれか。
`if`文は、条件が`true`の場合にコードブロックを実行する。
`switch`文は、厳密な比較(`===`)を行う。
正解
PHP 8.0で導入された`match`式は、値を返すことができる。
`else if`と`elseif`は同じ意味である。
解説
`switch`文は、各`case`の値との比較を緩やかな比較(`==`)で行います。型の異なる値同士でも一致するとみなされる場合がある点に注意が必要です。厳密な比較(`===`)による分岐が必要な場合は、PHP 8.0で導入された`match`式を使います。
他の選択肢が正しい理由は次の通りです。
・`if`文は条件式が`true`と評価されたときにブロック内の処理を実行します。
・`match`式は該当する腕(arm)の右辺の値を式の結果として返すため、`$result = match($x) { ... };`のように変数へ直接代入できます。
・`else if`(2語)と`elseif`(1語)はPHPの構文上まったく同じ意味で、どちらを使っても動作は変わりません。
例:
```
switch ('1') {
case 1: // ゆるい比較のためマッチする
echo 'matched';
break;
}
$result = match (1) {
1 => 'one',
default => 'other',
};
```
(参照: 独習PHP 第4版 第4章 制御構文 4.1節 p.124〜138)
関連する問題
- 次のコードの実行結果として正しいものはどれか。 ```php $num = ['zero', 'one', 'three']; $num[3] = 'four'; $num[2] = 'two'; print ('【loop_A】'); for ($i = 0, $count_num = count($num); $i < $count_num; $i++) { print ($num[$i] . ','); } print ('【loop_B】'); foreach ($num as $i => $n) { print ($i . ','); } ```
- 次のコードの実行結果として正しいものはどれか。 ```php $i = 1; while ($i <= 5) { print $i; $i++; } ```
- PHPのループ制御に関する次の記述のうち、正しいものはどれか。
- PHPの条件分岐に関する次の記述のうち、正しいものはどれか。
- 次のコードの実行結果として正しいものはどれか。 ```php for ($i = 0; $i < 5; $i++) { if ($i == 2) { continue; } if ($i == 4) { break; } print $i; } ```