第3章 演算子 / 第5回 模擬試験
PHPの配列の比較演算子に関する次の記述のうち、正しいものはどれか。
`==`による配列の比較は、キーと値のペアが(順序に関わらず)すべて等しい場合に`true`になる。
正解
`===`による配列の比較は、要素の並び順が異なっても`true`になる。
配列同士は比較演算子で比較することが一切できない。
配列の比較は、必ず要素数が異なると常にエラーになる。
解説
配列同士を`==`で比較すると、「要素数が同じで、すべてのキーとそれに対応する値が等しい」場合に`true`になります。この比較では要素の「並び順」は問われません。
他の選択肢が誤りである理由は次の通りです。
・`===`による配列の比較は、`==`の条件に加えて「要素の並び順(挿入順)まで完全に一致する」ことも要求します。並び順が異なれば`===`は`false`になります。「並び順が異なっても`true`」というのは誤りです。
・配列同士は`==`, `===`のほか、`<`, `>`などの比較演算子でも比較できます。「一切できない」は誤りです。
・要素数が異なる配列同士を比較しても、エラーにはならず単に`false`と判定されます。
例:
```
$a = ['x' => 1, 'y' => 2];
$b = ['y' => 2, 'x' => 1]; // 並び順が違う
var_dump($a == $b); // true(キーと値のペアが同じ)
var_dump($a === $b); // false(並び順が違う)
```
(参照: 独習PHP 第4版 第3章 演算子 3.3.4節 配列の比較 p.105)
関連する問題
- 次のコードの【 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; ```