第2章 PHPの基本 / 第2回 模擬試験
次のコードの実行結果として正しいものはどれか。 ```php $a = [1, 2, 3]; $b = $a; $b[] = 4; print count($a) . "," . count($b); ```
3,4
正解
4,4
3,3
4,3
解説
PHPの配列は、`$b = $a;`のように別の変数へ代入すると値としてコピーされます(オブジェクトとは異なり、参照ではなく値渡しの挙動です)。そのため`$b`に要素を追加しても元の`$a`には影響しません。
例:
```
$a = [1, 2, 3];
$b = $a;
$b[] = 4;
print count($a) . "," . count($b); // 3,4
```
`$a`は3要素のまま、`$b`だけが4要素になります。もし`$a`にも変更を反映させたい場合は、`$b = &$a;`のように参照代入(`&`)を使う必要があります。
(参照: 独習PHP 第4版 第2章 PHPの基本 2.4節 配列 p.71〜81)