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

PHPの`switch`命令の判定方法に関する次の記述のうち、正しいものはどれか。

`switch`文の比較は、デフォルトで緩やかな比較(`==`相当)で行われる。 正解
`switch`文は、`case`の値に変数を使用することができない。
`switch`文の`default`は必ず最初に記述しなければならない。
`switch`文は文字列の値では分岐できない。
解説
`switch`文は、各`case`の値との比較に、デフォルトで緩やかな比較(`==`相当)を使用します。そのため、型が異なる値同士でも一致とみなされてしまう場合があり、意図しない分岐の原因になることがあります(PHP8で追加された`match`式は、この問題を避けるために厳密な比較`===`を採用しています)。 他の選択肢が誤りである理由は次の通りです。 ・`switch`文の`case`には、リテラル値だけでなく変数や式も指定できます。 ・`switch`文の`default`は、記述する位置に決まりはなく、先頭・末尾・途中のどこにでも書けます。 ・`switch`文は数値だけでなく、文字列の値でも分岐できます。 例: ``` switch ('1') { case 1: // 緩やかな比較のため、文字列'1'と数値1がマッチする echo 'matched'; break; } ``` (参照: 独習PHP 第4版 第4章 制御構文 4.1.8節 補足 switch命令の判定方法 p.136)

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