php foreach 引用传值问题

在一般的开发过程中,我们经常使用foreach来遍历一个数组,并且在遍历中赋值给另外一个数组,之后的操作就都会围绕着这个新的数组来进行。
这主要还是因为一般的foreach的操作是无法直接对原本的数组进行赋值操作,因为涉及到堆栈方面的知识就相当于是复制出来的一个新的数组,并不会对原本的数组的值造成影响,如果需要改变原本数组的值我们就需要用到引用传值了
例:

$a = array('a','b','c');
        foreach($a as &$v){}
var_dump($v);

        foreach($a as $v){}
        var_dump($a);

如果在第一个foreach中对数组的值进行修改,是可以修改成功的,但是倘若在此按照正常的遍历方式遍历就会出现问题。比如第二个数组就会输出a,b,b的数组那么到底为什么会变成这样呢?
其实是在第一次引用传值中,将‘***$v与遍历的最后一个值([2])的对应关系***’保留了下来,既[2] = v ; 然 后 在 而 二 次 f o r e a c h 中 遍 历 时 与 [ 2 ] 对 应 的 值 就 变 成 了 a , b , v; 然后在而二次foreach中遍历时与[2]对应的值就变成了a,b, v;foreach[2]a,b,v.
第一次循环$v为a,数组就是a,b,a,然后规律,a,b,b,最后一次由于值相同还是a,b,b

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值