1. list 把数组中的值赋给一些变量
<?php $info = array('coffee', 'brown', 'caffeine'); // 列出所有变量 list($drink, $color, $power) = $info; echo "$drink is $color and $power makes it special.\n"; ?>
<?php $info = array('coffee', 'brown', 'caffeine'); list($a[0], $a[1], $a[2]) = $info; var_dump($a); ?> 产生如下输出(注意单元顺序和 list() 语法中所写的顺序的比较): array(3) { [2]=> string(8) "caffeine" [1]=> string(5) "brown" [0]=> string(6) "coffee" } Warning list() 从最右边一个参数开始赋值。如果你用单纯的变量,不用担心这一点。 但是如果你用了具有索引的数组,通常你期望得到的结果和在 list() 中写的一样是从左到右的,但实际上不是。 它是以相反顺序赋值的。
<?php $info = array('a'=>'coffee', 'b'=>'brown', 'c'=>'caffeine'); list($drink, $color, $power) = $info; echo $drink; ?> 这个时候会抛出异常: Exception Object [message:protected] => [Notice] : Undefined offset: 2 这是因为: list() 仅能用于数字索引的数组并假定数字索引从 0 开始。 解决办法可以使用sort处理下 <?php $info = array('a'=>'coffee', 'b'=>'brown', 'c'=>'caffeine'); sort($info); list($drink, $color, $power) = $info; echo $drink; ?>