list構文
配列をデリファレンスする言語構造。タプルや名前付きタプルを変数に分解するために用いることができる。
list型との相性はあまりよくないので注意。
code:php
$chara = '初音ミク', 17;
$name, $age = $chara;
echo "名前: {$name}", PHP_EOL;
echo "年齢: {$age}", PHP_EOL;
PHP 7.1より以前はlist() =と書く必要があった
PHP: 7.1 新機能 - Manual
code:php
list($name, $age) = $chara;
foreachと組合せることもできる
code:php
$characters = [
'初音ミク', 17,
'鏡音リン', 14,
'巡音ルカ', 20,
];
foreach ($characters as $name, $age) {
echo "名前: {$name}", PHP_EOL;
echo "年齢: {$age}", PHP_EOL;
}
PHP 7.1からはキーを明示して取り出すこともできるようになった
code:php
$characters = [
'name' => '初音ミク', 'age' => 17,
'name' => '鏡音リン', 'age' => 14,
'name' => '巡音ルカ', 'age' => 20,
];
foreach ($characters as 'name' => $name, 'age' => $age) {
echo "名前: {$name}", PHP_EOL;
echo "年齢: {$age}", PHP_EOL;
}
PHPマニュアルでは便宜上関数マニュアルに収められているが、関数呼び出しではない
https://www.php.net/manual/ja/function.list.php
PHPのlist()はタプル展開のための機能 - Qiita
雑感
便利かといえば便利なのだけど… 無理して分割代入しなくていいのでは
code:php
$characters = [
'name' => '初音ミク', 'age' => 17,
'name' => '鏡音リン', 'age' => 14,
'name' => '巡音ルカ', 'age' => 20,
];
foreach ($characters as $chara) {
echo "名前: {$chara'name'}", PHP_EOL;
echo "年齢: {$chara'age'}", PHP_EOL;
}