list
(PHP 4, PHP 5, PHP 7, PHP 8)
list — 把陣列中的值賦給一組變數
說明
像 array() 一樣,這不是真正的函式,而是語言結構。 list() 可以在單次操作內為一組變數賦值。字串不能解包且 list() 表達式不能完全為空。
注意:
在 PHP 7.1.0 之前的版本,list() 僅能用於數字索引的陣列,並假定數字索引從 0 開始。
參數
-
var
-
一個變數。
-
vars
-
更多變數。
返回值
返回指定的陣列。
更新日誌
版本 | 說明 |
---|---|
7.3.0 | 支援在陣列解構時傳引用。 |
7.1.0 | 現在可以指定 list() 中的鍵。 這就可以解構非數字鍵或者無順序的陣列。 |
範例
示例 #1 list() 例子
<?php
$info = array('coffee', 'brown', 'caffeine');
// 列出所有變數
list($drink, $color, $power) = $info;
echo "$drink is $color and $power makes it special.\n";
// 列出他們的其中一個
list($drink, , $power) = $info;
echo "$drink has $power.\n";
// 或者讓我們跳到僅第三個
list( , , $power) = $info;
echo "I need $power!\n";
// list() 不能對字串起作用
list($bar) = "abcde";
var_dump($bar); // NULL
?>
示例 #2 list() 用法的一個例子
<?php
$result = $pdo->query("SELECT id, name FROM employees");
while (list($id, $name) = $result->fetch(PDO::FETCH_NUM)) {
echo "id: $id, name: $name\n";
}
?>
示例 #3 使用巢狀的 list()
<?php
list($a, list($b, $c)) = array(1, array(2, 3));
var_dump($a, $b, $c);
?>
int(1) int(2) int(3)
示例 #4 list() 和索引順序定義
list() 使用 array 索引的順序和它何時定義無關。
<?php
$foo = array(2 => 'a', 'foo' => 'b', 0 => 'c');
$foo[1] = 'd';
list($x, $y, $z) = $foo;
var_dump($foo, $x, $y, $z);
得到以下輸出(注意比較 list() 所寫的元素順序):
array(4) { [2]=> string(1) "a" ["foo"]=> string(1) "b" [0]=> string(1) "c" [1]=> string(1) "d" } string(1) "c" string(1) "d" string(1) "a"
示例 #5 帶鍵的 list()
從 PHP 7.1.0 開始,list() 可以包含顯式的鍵,可賦值到任意表達式。 可以混合使用數字和字串鍵。但是不能混合有鍵和無鍵不能混用。
<?php
$data = [
["id" => 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";
以上例程會輸出:
id: 1, name: Tom id: 2, name: Fred 2, 4