list

(PHP 4, PHP 5, PHP 7, PHP 8)

list把數(shù)組中的值賦給一組變量

說(shuō)明

list(mixed $var, mixed ...$vars = ?): array

array() 一樣,這不是真正的函數(shù),而是語(yǔ)言結(jié)構(gòu)。 list() 可以在單次操作內(nèi)為一組變量賦值。字符串不能解包且 list() 表達(dá)式不能完全為空。

注意:

在 PHP 7.1.0 之前的版本,list() 僅能用于數(shù)字索引的數(shù)組,并假定數(shù)字索引從 0 開(kāi)始。

參數(shù)

var

一個(gè)變量。

vars

更多變量。

返回值

返回指定的數(shù)組。

更新日志

版本 說(shuō)明
7.3.0 支持在數(shù)組解構(gòu)時(shí)傳引用。
7.1.0 現(xiàn)在可以指定 list() 中的鍵。 這就可以解構(gòu)非數(shù)字鍵或者無(wú)順序的數(shù)組。

范例

示例 #1 list() 例子

<?php

$info 
= array('coffee''brown''caffeine');

// 列出所有變量
list($drink$color$power) = $info;
echo 
"$drink is $color and $power makes it special.\n";

// 列出他們的其中一個(gè)
list($drink, , $power) = $info;
echo 
"$drink has $power.\n";

// 或者讓我們跳到僅第三個(gè)
list( , , $power) = $info;
echo 
"I need $power!\n";

// list() 不能對(duì)字符串起作用
list($bar) = "abcde";
var_dump($bar); // NULL
?>

示例 #2 list() 用法的一個(gè)例子

<?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(23));

var_dump($a$b$c);

?>
int(1)
int(2)
int(3)

示例 #4 list() 和索引順序定義

list() 使用 array 索引的順序和它何時(shí)定義無(wú)關(guān)。

<?php
$foo 
= array(=> 'a''foo' => 'b'=> 'c');
$foo[1] = 'd';
list(
$x$y$z) = $foo;
var_dump($foo$x$y$z);

得到以下輸出(注意比較 list() 所寫(xiě)的元素順序):

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 開(kāi)始,list() 可以包含顯式的鍵,可賦值到任意表達(dá)式。 可以混合使用數(shù)字和字符串鍵。但是不能混合有鍵和無(wú)鍵不能混用。

<?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(
=> $second=> $fourth) = [1234];
echo 
"$second$fourth\n";

以上例程會(huì)輸出:

id: 1, name: Tom
id: 2, name: Fred

2, 4

參見(jiàn)

  • each() - 返回?cái)?shù)組中當(dāng)前的鍵/值對(duì)并將數(shù)組指針向前移動(dòng)一步
  • array() - 新建一個(gè)數(shù)組
  • extract() - 從數(shù)組中將變量導(dǎo)入到當(dāng)前的符號(hào)表