第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)
関連する問題
- 次のコードの【 A 】に入れた場合に`true`が返される組み合わせとして正しいものはどれか。 ```php if (【 A 】) { print("true"); } else { print("false"); } 【1】"php" > "perl" 【2】0 != "0" 【3】5 - 6 + 1 【4】"false" 【5】0 + false 【6】"543a" < 56 【7】abs(-6) > 10 / 2 ```
- 次のコードの実行結果として正しいものはどれか。 ```php $a = 2 + 3 * 6; $b = $a % 7; $c = $b ** 2; print($c); ```
- PHPの論理演算子に関する次の記述のうち、正しいものはどれか。
- PHPの論理演算子に関する次の記述のうち、誤っているものはどれか。
- 次のコードの実行結果として正しいものはどれか。 ```php $a = 10; $b = 3; print $a / $b . " " . intdiv($a, $b) . " " . $a % $b; ```