list 把数组中的值赋给一组变量 &reftitle.description; arraylist mixedvar mixedvars array 一样,这不是真正的函数,而是语言结构。 list 可以在单次操作内为一组变量赋值。仅数组和实现了 ArrayAccess 的对象可以解包。list 表达式不能为空。 在 PHP 7.1.0 之前的版本,list 仅能用于数字索引的数组,并假定数字索引从 0 开始。 自 PHP 7.1.0 起,list 还可以包含指定的 key,从而允许使用非整数或非连续 key 解构数组。有关数组解构的更多详细信息,请参阅数组解构部分。 尝试访问未定义的数组 key 与访问其他未定义变量相同:将发出 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; <function>list</function> 示例 ]]> 使用 <function>list</function> 的示例 query("SELECT id, name FROM employees"); while (list($id, $name) = $result->fetch(PDO::FETCH_NUM)) { echo "id: $id, name: $name\n"; } ?> ]]> 使用嵌套的 <function>list</function> ]]> &example.outputs; list 使用 array 索引的顺序和它何时定义无关。 <function>list</function> 和索引顺序定义 '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" ]]> 带键的 <function>list</function> 从 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