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) }  } 总结:在函数体使用引用传递能够在函数体外部获取函数体内的值,引用还有其余用法,继续学习^^^^