首先抛出问题:
给出一个数组,$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) }
}
总结:在函数体使用引用传递可以在函数体外部获取函数体内的值,引用还有其他用法,继续学习^^^^
php循环函数foreach()中引用传递的使用
最新推荐文章于 2022-11-10 11:09:15 发布