PHP

list

list

(PHP 4, PHP 5, PHP 7)

列表 - 将变量分配为数组

描述

array list ( mixed $var1 [, mixed $... ] )

与array()类似,这不是一个真正的函数,而是一种语言结构。list()用于在一个操作中分配一个变量列表。

注意list()仅适用于数值数组,并假定数字索引从0开始。

警告

在PHP 5中,list()将从最右边的参数开始分配值。在PHP 7中,list()以最左边的参数开始。

如果你使用简单变量,你不必担心这一点。但是如果你使用的是带有索引的数组,你通常希望数组中索引的顺序与从左到右在list()中写入的顺序相同,这在PHP 5中并不是这样,因为它是按相反顺序分配的。

一般来说,避免依赖特定的操作顺序是可取的,因为这可能在未来再次改变。

警告

list()执行期间修改数组(例如使用list($ a,$ b)= $ b)会导致未定义的行为。

参数

var1

一个变量。

返回值

返回分配的数组。

更新日志

版本描述
7.0.0分配操作的执行顺序已更改。
7.0.0list()表达式不能再完全为空。
7.0.0字符串不能再解压。

例子

示例#1 list()的例子

<?php $info = array('coffee', 'brown', 'caffeine' // Listing all the variables list($drink, $color, $power) = $info; echo "$drink is $color and $power makes it special.\n"; // Listing some of them list($drink, , $power) = $info; echo "$drink has $power.\n"; // Or let's skip to only the third one list( , , $power) = $info; echo "I need $power!\n"; // list() doesn't work with strings list($bar) = "abcde"; var_dump($bar // NULL ?>

Example#2一个使用list()的例子

<table>  <tr>   <th>Employee name</th>   <th>Salary</th>  </tr> <?php $result = $pdo->query("SELECT id, name, salary FROM employees" while (list($id, $name, $salary) = $result->fetch(PDO::FETCH_NUM)) {     echo " <tr>\n" .           "  <td><a href=\"info.php?id=$id\">$name</a></td>\n" .           "  <td>$salary</td>\n" .           " </tr>\n"; } ?> </table>

示例#3使用嵌套列表()

<?php list($a, list($b, $c)) = array(1, array(2, 3) var_dump($a, $b, $c ?>

int(1) int(2) int(3)

示例#4使用list()和数组索引

<?php $info = array('coffee', 'brown', 'caffeine' list($a[0], $a[1], $a[2]) = $info; var_dump($a ?>

提供以下输出(请注意比较它们在list()语法中写入的顺序)的顺序:

上述PHP 7输出示例:

array(3) { [0]=> string(6) "coffee" [1]=> string(5) "brown" [2]=> string(8) "caffeine" }

上面的例子在PHP 5中输出:

array(3) { [2]=> string(8) "caffeine" [1]=> string(5) "brown" [0]=> string(6) "coffee" }

示例#5 list()和索引定义的顺序

定义list()所使用的数组的索引的顺序是不相关的。

<?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"