<?php // each经常和list一起用 // 而list,是80%的PHPer都搞不清楚的一个问题 // list是重合赋值语句,可以一次性为多个变量赋值 // 下面,是常见的操作---即把数组的单元赋给多个变量 $arr = array('东','南','西','北'); $east = $arr[0]; $south = $arr[1]; $west = $arr[2]; $north = $arr[3]; // 上面的这个过程,用4次赋值,把数组的4个单元,赋给4个变量,麻烦 echo $east,$south,$west,$north,'<br />'; // 把春夏秋冬赋给4个变量 $arr = array('春','夏','秋','冬'); list($spring,$summer,$fall,$winter) = $arr; echo $spring,$summer,$fall,$winter,'<br />'; list($a,$b,$c) = array(2=>'赵',3=>'钱',1=>'孙'); var_dump($a); echo $b,$c,'<br />'; /*** list是如何工作的? 因为list能够给多个变量赋值,即把数组的多个单元分别赋给多个值. 那么,自然要注意1个最重要的地方 即-----把数组的哪个单元 对应 赋给哪个变量??? 具体对应如下: 在list中,按","隔开的顺序,从左到右,分别对应右侧数组(设为$arr) $arr[0],$arr[1],$arr[2],.... $arr[N] 如果需要对应右侧的$arr[x] 不存在怎么办? 答:依然是先对应,不存在,当成NULL来处理. $a <===> $arr[0] $b <===> $arr[1] $c <===> $arr[2] 映射工作完成!!!!! 开始赋值! 赋值的过程,和映射的顺序是反的,是从右往左赋的值 $c = $arr[2]; $b = $arr[1]; $a = $arr[0]; $c = '赵'; $b = '孙'; $a = NULL; // $arr[0]不存在 赋值完毕!!!!!!!!! 因此,最终打印 NULL,孙,赵 ***/ ?>
<?php // 仔细判断,打出$arr来 list($arr[0],$arr[1],,$arr[2]) = array(3=>'赵',1=>'钱',5=>'孙',2=>'李',0=>'燕'); print_r($arr); /** 分析: 先从左到右来对应着分配值 $arr[0] <====> array[0] 燕 $arr[1] <====> array[1] 钱 $arr[2] <====> array[3] 赵 分配完毕,开始赋值!!!! 从右到左赋值 $arr[2] = 赵 $arr[1] = 钱 $arr[0] = 燕 数组打印,并不是如你想的,按索引的大小来打印, 而是按创建时的顺序来打印. 因此,最终打印 array( 2=>'赵', 1=>'钱', 0=>'燕' ) **/ %>