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.0 | list()表达式不能再完全为空。 |
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"