(PHP 4, PHP 5, PHP 7)
list — 把数组中的值赋给一组变量
说明
list(mixed $var1 [, mixed $... ]): array
像array()一样,这不是真正的函数,而是语言结构。list()可以在单次操作内就为一组变量赋值。
参数
var1
一个变量。
返回值
返回指定的数组。
更新日志
版本 | 说明 |
---|---|
7.1.0 | 现在可以指定list()中的键。 这就可以解构非数字键或者无顺序的数组。 |
7.0.0 | 赋值操作的顺序发生了变化。 |
7.0.0 | list()表达式不再可以完全为空。 |
7.0.0 | 字符串无法再被拆包(unpack)。 |
范例
Example #1list()例子
<?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
?>
Example #2list()用法的一个例子
<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>
Example #3 使用嵌套的list()
<?php
list($a, list($b, $c)) = array(1, array(2, 3));
var_dump($a, $b, $c);
?>
int(1)
int(2)
int(3)
Example #4 在list()中使用数组索引
<?php
$info = array('coffee', 'brown', 'caffeine');
list($a[0], $a[1], $a[2]) = $info;
var_dump($a);
?>
产生如下输出(注意单元顺序和list()语法中所写的顺序的比较):
Output of the above example in PHP 7:
array(3) {
[0]=>
string(6) "coffee"
[1]=>
string(5) "brown"
[2]=>
string(8) "caffeine"
}
Output of the above example in PHP 5:
array(3) {
[2]=>
string(8) "caffeine"
[1]=>
string(5) "brown"
[0]=>
string(6) "coffee"
}
Example #5list()和索引顺序定义
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"
Example #6 带键的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
淘宝 adsense 商品推荐
google adsense admoi联盟推广 站长变现
价格:10元