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

次のコードの実行結果として正しいものはどれか。 ```php $data = ["a" => 1, "b" => 2, "c" => 3]; [$x, $y] = [$data["a"], $data["c"]]; print "$x, $y"; ```

1, 3 正解
1, 2
2, 3
エラーが発生する
解説
`[$x, $y] = [$data["a"], $data["c"]];`は、右辺の配列(`$data["a"]`の値と`$data["c"]`の値からなる配列)を、左辺の`$x`, `$y`に順番に分割代入します。 ・`$data["a"]`は`1` ・`$data["c"]`は`3` 右辺の配列は`[1, 3]`となり、`$x = 1`, `$y = 3`が代入されます。 例: ``` $data = ["a" => 1, "b" => 2, "c" => 3]; [$x, $y] = [$data["a"], $data["c"]]; print "$x, $y"; // 1, 3 ``` このように分割代入の右辺には、変数だけでなく任意の式(配列の要素へのアクセスなど)を組み合わせて配列リテラルを作ることもできます。 (参照: 独習PHP 第4版 第3章 演算子 3.2.2節 分割代入 p.98〜100)