第3章 演算子 / 第4回 模擬試験

次のコードの実行結果として正しいものはどれか。 ```php $str = "100"; $num = 100; var_dump($str == $num); var_dump($str === $num); ```

bool(true) / bool(false) 正解
bool(true) / bool(true)
bool(false) / bool(false)
bool(false) / bool(true)
解説
`==`(緩やかな等価演算子)は、型が異なっていても値として等しいとみなせれば`true`を返します。数値形式の文字列`"100"`と整数`100`は、値としては等しいため`$str == $num`は`true`になります。 一方`===`(厳密等価演算子)は、値だけでなく型も一致しなければ`true`になりません。`$str`は`string`型、`$num`は`int`型で型が異なるため、`$str === $num`は`false`になります。 例: ``` $str = "100"; $num = 100; var_dump($str == $num); // bool(true) var_dump($str === $num); // bool(false) ``` 「型を気にせず値だけ比べたいときは`==`、型まで含めて厳密に比べたいときは`===`」という使い分けが基本ですが、意図しないバグを避けるため、実務では`===`を基本に使うことが推奨されます。 (参照: 独習PHP 第4版 第3章 演算子 3.3.2節 厳密な等価演算子 p.103〜104)