首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

list

(PHP 4, PHP 5, PHP 7)

列表 - 将变量分配为数组

描述

代码语言:javascript
复制
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()的例子

代码语言:javascript
复制
<?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()的例子

代码语言:javascript
复制
<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使用嵌套列表()

代码语言:javascript
复制
<?php

list($a, list($b, $c)) = array(1, array(2, 3));

var_dump($a, $b, $c);

?>
代码语言:javascript
复制
int(1)
int(2)
int(3)

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

代码语言:javascript
复制
<?php

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

list($a[0], $a[1], $a[2]) = $info;

var_dump($a);

?>

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

上述PHP 7输出示例:

代码语言:javascript
复制
array(3) {
  [0]=>
  string(6) "coffee"
  [1]=>
  string(5) "brown"
  [2]=>
  string(8) "caffeine"
}

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

代码语言:javascript
复制
array(3) {
  [2]=>
  string(8) "caffeine"
  [1]=>
  string(5) "brown"
  [0]=>
  string(6) "coffee"
}

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

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

代码语言:javascript
复制
<?php
$foo = array(2 => 'a', 'foo' => 'b', 0 => 'c');
$foo[1] = 'd';
list($x, $y, $z) = $foo;
var_dump($foo, $x, $y, $z);

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

代码语言:javascript
复制
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"

扫码关注腾讯云开发者

领取腾讯云代金券