ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
指针一旦处于非法位置,没有参照物了,无法上移和下移.但是可以end()和reset() 当一个数组复制的时候,指针也跟着复制,当指针在非法区域时,先输出谁,谁就先初始化,另一个非法 current():返回当前数组指针处元素的值,不移动指针 key():返回当前数组指针处元素的下标,不移动指针 next():返回下一个数组元素的值,并将指针下移一行 prev():返回上一个数组元素的值,并将指针回退一步 end():返回最后一个数组元素的值,并将指针移到数组最后一个元素 reset():返回第一个数组元素的值,并将指针移到第一个元素上 each():取一个数组的”当前单元”的下标和值(并放入一个数组),然后将指针移到下一个单元//是引用传递,改变each里面的值,原数组会发生改变 例:$arr4=array(1=>3,”a1”=>11,3=>5); $result1=each($arr4); $result2=each($arr4); //$result1值为array(1=>3,value=>3,0=>1,key=>1); //$result1值为array(1=>11,value=>11,0=>a1,key=>a1); list():用于一次性取得从0开始的数字下标的多个单元的值,把这些值赋给一些变量 例如:list($变量1,$变量2,---)=$数组 遍历数组 for($i=0; $i<count($len); ++$i ) {$key=key($arr4); $value=current($arr4); echo “<br />$key=>$value”; next($arr4);} while( list($key,$value)=each($arr) ) { echo “<br />$key=$value”; } #### foreach循环 foreach($arr as \[$key => \] $value){---} 遍历过程中变量可以人为设定引用传递 foreach($arr as $key => &$value){…} 原数组也改变 遍历后,指针位置为null,对应值为bool(false) foreach遍历的是拷贝之后的数组,在里面修改原数组,拷贝之后的数组没有发生改变.同理修改$value的值原数组没有发生改变 foreach里面操作修改是原数组中改变,比如unset,能把原数组删空,但是foreach还能遍历 foreach遍历中指针处于不确定状态,如果foreach后还要对指针操作,建议把指针初始化 #### 写时复制COW copy on write 当一个变量复制另一个变量的时候,其实并没有直接去开辟一个空间,只有当其中一个变量进行写操作的时候,另一个变量才会去开辟空间。 ##### 模拟计算机内存去演示写时复制 memory\_get\_usage(): 获取当前代码占用的计算机内存。 array\_fill(startnum,num,value): 创建一个数组元素,startnum代表开始第一个元素的下标,num代表数组中一共有多少个元素,value给所有元素统一赋值。 ![Image](https://box.kancloud.cn/fb6680c77bc19eb2f6c1d045c397982f_1141x302.png) 例题: $arr=array('天','地','玄','黄'); foreach($arr as $key=>$value){ } var\_dump(current($arr)); //指针处于非法位置 $arr=array('天','地','玄','黄'); foreach($arr as $key=>$value){ $arr\[2\]='王'; } var\_dump(current($arr)); //指针指向地 $arr=array('天','地','玄','黄'); foreach($arr as $key=>$value){ if($key==1){ $arr\[2\]='王'; } } var\_dump(current($arr)); //指针指向王 $arr=array('天','地','玄','黄'); foreach($arr as $key=>$value){ if($key==2){ $arr\[2\]='王'; } } var\_dump(current($arr)); //指针指向黄 $arr=array('天','地','玄','黄'); foreach($arr as $key=>$value){ if($key==3){ $arr\[2\]='王'; } } var\_dump(current($arr)); //指针指向天 $arr=array('天','地','玄','黄'); foreach($arr as $key=>$value){ if($key==4){ $arr\[2\]='王'; } } var\_dump(current($arr)); //指针指向false