php 数组 引用赋值 数组指针的几个函数 遍历数组

1. 复制一个数组,就是把一个数组赋值给一个变量便可。会把数组指针位置一同复制。这里面有两种情况。一,指针位置合法,这时直接复制,无影响。二,原数组指针位置非法时,“新”数组指针会初始化。(这里的新字为什么要加引号?请看下文)先看例子:

php <wbr>数组复制和遍历

出现这种情况好像不对?$arr2 难道不是新数组?新数组的数组指针应该重置了啊。这里应该注意了。这涉及到 php 内部优化原理。这里 $arr2 = $arr1 ,在俩变量都没发生写操作时,他们其实引用的是同一个内存单元,即引用赋值。在其中一个变量发生写操作后,内存单元会复制一份,发生改变的变量会去引用它,并把数组指针初始化。这里 current() 函数发生一个写操作,所以 $arr1 会去引用复制的内存单元,并且指针初始化。

这个php内部优化是对值传递的优化。如果是一个变量,那不用讨论,因为涉及了数组指针,容易出错,所以讨论。注意数组值传递操作后,数组指针的变化便可。

2. 关于 php 数组指针的几个函数:
   current() 获得当前指针所在元素的值。
   key()     获得当前的键。
   next()    指针后移一位。
   prev()    指针前移一位。
   reset()   指针重置到第一位。
   end()     指针移动到最后一位。

3. foreach 的执行流程。它遍历的其实是一个数组的拷贝。在循环体中对数组赋值,其实是对原数组的改变,不会影响到当前被遍历的数组。

4. 在 foreach( $arr as $k => & $v) 中 $v 可以是引用传递。这时的 $v 的值会影响到原数组的值。$k 不可以是引用传递。

5. count() 计算数组长度。第二个参数为 true 时,统计多维数组长度。注意多维数组的长度。

6. 真正的遍历数组是先获得数组元素,然后获得键与值。而不是先获得键,然后获得值,这不是遍历。

7. foreach 会先把指针初始化,然后给键和值变量赋值,之后移动指针,最后执行程序体。

8. each 包含 key,current,next 三个功能。返回一个索引数组和关联数组的集合数组。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值