1.list是一个复合的复制函数,可以将一个数组一次赋给多个变量。我们常用以下语句遍历一个数组。

$arr = array('东','男','西','北');
while(list($k,$v)=each($arr)){
    echo $k.'=>'.$v.'<br/>';
}


2.从上边可以看出,each($arr)似乎是一个包含两个元素的数组,实际不是。

var_dump(each($arr));

res:{ [1]=> string(3) "东" ["value"]=> string(3) "东" [0]=> int(0) ["key"]=> int(0) }
分析:

$k = array(0)(array(0)=0);

$v = array(1)(array(1)='东')

所以list($k,$v) = each($arr);可以取得数组的某个元素的键和值,就是这么简单了。

3.另外附上一个例子

list($arr[0],$arr[1],,$arr[2]) = array(3=>'赵',1=>'钱',5=>'孙',2=>'李',0=>'燕');
var_dump($arr);//return 赵,钱,燕

分析:
$arr[0] = array[0] //燕
$arr[1] = array[1] //钱
$arr[2] = array[3] //赵
然后从左到右复制
$arr[2] = 赵
$arr[1] = 钱
$arr[0] = 燕
数组打印,并不是如你想的,按索引的大小来打印, 而是按创建时的顺序来打印. 因此,最终打印 
array(
2=>'赵',
1=>'钱',
0=>'燕'
)