current($arr);//"当前"的意思,该函数是取出数组内部指针指向的单元的值

echo key($arr);//"键",该函数是 取出数组内部指针指向的单元的 "键"

next($arr);//  "下一个", 把数组内部的指针往尾部移动一个单元

prev($arr);//指针往头部移动一下

reset($arr);//不管数组的指针跑哪儿了,用reset,可以重置,使数组的指针归0,指向开头处

end($arr);//该函数把指针指向数组的最后一个单元


 

foreach应该把指针移到尾部去了, 第2个foreach,会不会受第1个foreach的影响,

答:foreach在运行前,会自动reset数组,因此不会受上一次的影响.

问:foreach循环后,会不会帮我们把数组reset指针初始化? 

答;不会


 

each的作用是把指针指向的当前单元的信息组成一个数组 数组有4个单元,具体如下:

array(

1=>'单元值',

'value'=>'单元值',

0=>'单元的键',

'key'=>'单元的键'

)


each不仅把当前指针指向的单元的信息组合成一个数组返回
并且同时把指针往尾部移动一次


$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能够给多个变量赋值,即把数组的多个单元分别赋给多个值. 那么,自然要注意一个最重要的地方 即-----把数组的哪个单元 对应 赋给哪个变量???

具体对应如下: 在list中,按","隔开的顺序,从左到右,分别对应右侧数组(设为$arr) $arr[0],$arr[1],$arr[2],.... $arr[N]

如果需要对应右侧的$arr[x] 不存在怎么办? 答:依然是先对应,不存在,当成NULL来处理.


1: 对于数字的索引值,不必加单双引号
 因为加了单双引号,比如"1",则需要把"1"转成整型1,来寻找该单元.影响了效率.

2: 字符串型的下标,要不要加单双引号?
没有加单双引号,理解成常量,并且按常量值来取值. 如果没有该常量,再次把name当成字符串的下标来处理.
不加单双引号,流程上,先理解成常量,如无,再当成字符串,效率必然低.

3:加单引还是加双引?
在字符串学习的时候,单引号的解析速度远比双引号快.因此,优先加 单引号.

总结:
数字类型的索引,不必加引号
字符串类型索引必加,而且优先加单引号