list
配列と同様の形式で、複数の変数への代入を行う
&reftitle.description;
arraylist
mixedvar
mixedvars
array と同様に、
この関数は実際には関数ではなく言語構造です。
list は、
この関数は、配列や ArrayAccess
を実装したオブジェクトを扱うことができます。
list には、空の式を指定できません。
PHP 7.1.0 より前のバージョンでは、list は数値添字の配列でのみ動作し、
また、添字は 0 から始まることを想定していました。
PHP 7.1.0 より後のバージョンでは、list
には明示的にキーを含めることができます。
これによって、数値でないキーや、連続していないキーの配列を分解できるようになっています。
配列の分解に関する詳細な情報は、
配列の分解 を参照ください。
定義されていない配列のキーにアクセスしようとすることは、
その他の未定義の変数にアクセスすることと同じです:
つまり、E_WARNING
(PHP 8.0.0 より前は、E_NOTICE)
レベルのエラーが発生し、結果は &null; になります。
スカラー値を分解しようとすると、
全ての変数に &null; が代入されます。
ArrayAccess を実装していないオブジェクトを分解しようとすると、
致命的なエラーが発生します。
&reftitle.parameters;
var
変数。
vars
残りの変数。
&reftitle.returnvalues;
代入した配列を返します。
&reftitle.changelog;
&Version;
&Description;
7.3.0
配列へ分割して代入する操作が、リファレンスへの代入をサポートしました。
7.1.0
キーを list 関数で指定できるようになりました。
これによって、キーが数値でなかったり、連続していなかったりした場合に配列の構造を変えることができるようになります。
&reftitle.examples;
list の例
]]>
list の使用法の例
query("SELECT id, name FROM employees");
while (list($id, $name) = $result->fetch(PDO::FETCH_NUM)) {
echo "id: $id, name: $name\n";
}
?>
]]>
ネストした list の使用法
]]>
&example.outputs;
list が配列の要素をどの順に処理するかは、配列の添字とは無関係です。
list と添字の定義順
'a', 'foo' => 'b', 0 => 'c');
$foo[1] = 'd';
list($x, $y, $z) = $foo;
var_dump($foo, $x, $y, $z);
]]>
結果は次のようになります (list 内で要素をどの順で利用しているかに注目しましょう)。
string(1) "a"
["foo"]=>
string(1) "b"
[0]=>
string(1) "c"
[1]=>
string(1) "d"
}
string(1) "c"
string(1) "d"
string(1) "a"
]]>
list をキーを指定して使う
PHP 7.1.0 以降では、list に明示的に
キーを含めることができるようになりました。
任意の式も指定可能です。
数値や文字のキーも許されますが、
キーがない要素とある要素を混ぜることは許されません
1, "name" => 'Tom'],
["id" => 2, "name" => 'Fred'],
];
foreach ($data as ["id" => $id, "name" => $name]) {
echo "id: $id, name: $name\n";
}
echo PHP_EOL;
list(1 => $second, 3 => $fourth) = [1, 2, 3, 4];
echo "$second, $fourth\n";
]]>
&example.outputs;
&reftitle.seealso;
each
array
extract