php循环函数foreach()中引用传递的使用

首先抛出问题:
给出一个数组,$arr = array(
    array('level'=>13,'name'=>'jack','num'=>0),
    array('level'=>21,'name'=>'peter','num'=>0)
    );
//遍历数组,符合条件的num值+1
foreach($arr as $key=>$value)
{
    if($value['level'] == 13)
    {
        ++$value['num'];
    }
}
var_dump($arr);
结果:
array(2) { [0]=> array(3) { ["level"]=> int(13) ["name"]=> string(4) "jack" ["num"]=> int(0)                [1]=> array(3) { ["level"]=> int(21) ["name"]=> string(5) "peter" ["num"]=> int(0) } 
}
说明:
在foreach()循环结束后,$key与$value的值并未立即释放,此时修改$value里元素的值不会影响到$arr的值。
引用:
下面引出正题:
如果想在遍历的过程中修改数组元素的值,需要对foreach里的$value使用引用,此时被引用的$value指向当前数组的内存地址,即修改$value的值会改变$arr[$key]的值。
栗子:
$arr = array(
    array('level'=>13,'name'=>'jack','num'=>0),
    array('level'=>21,'name'=>'peter','num'=>0)
    );
    
foreach($arr as $key=>&$value)
{
    if($value['level'] == 13)
    {
        ++$value['num'];
    }
}
var_dump($arr);
结果:
array(2) { [0]=> array(3) { ["level"]=> int(13) ["name"]=> string(4) "jack" ["num"]=> int(1)                [1]=> &array(3) { ["level"]=> int(21) ["name"]=> string(5) "peter" ["num"]=> int(0) } 
}
总结:在函数体使用引用传递可以在函数体外部获取函数体内的值,引用还有其他用法,继续学习^^^^
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值