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

PHPの分割代入(配列の展開代入)に関する次の記述のうち、正しいものはどれか。

`[$a, $b] = [1, 2];`のように書くと、配列の各要素を複数の変数に一度に代入できる。 正解
分割代入はPHPではサポートされていない構文である。
分割代入は連想配列に対しては使用できない。
分割代入では、必ず配列のすべての要素を変数に代入しなければならない。
解説
`[$a, $b] = [1, 2];`(または`list($a, $b) = [1, 2];`)のように書くと、右辺の配列の各要素を、対応する位置の変数へ一度に代入できます(分割代入)。 他の選択肢が誤りである理由は次の通りです。 ・分割代入(リスト代入)はPHP 4以来サポートされている構文で、PHP 7.1以降は短縮記法`[$a, $b] = [...]`も使えます。 ・キーを指定すれば連想配列に対しても分割代入ができます(`['name' => $name] = ['name' => 'Taro'];`のように)。 ・分割代入では、右辺の配列の要素すべてを変数に受け取る必要はありません。`[, $b] = [1, 2];`のように一部の要素をカンマで空けて読み飛ばすこともできます。 例: ``` [$id, , $name] = [1, 'unused', 'Taro']; // 2番目の要素は読み飛ばす echo $id . ' ' . $name; // 1 Taro ['name' => $name] = ['name' => 'Jiro', 'age' => 25]; // キー指定 echo $name; // Jiro ``` (参照: 独習PHP 第4版 第3章 演算子 3.2.2節 分割代入 p.98〜100)