修改数组值加&符号 [ 1.1 版本 ]
&$value
与$value
在这里区别是什么,修改元素为什么一定要加&符号?
$data = '[{"id":"40","num":"6"},{"id":"32","num":"3"}]';
$data = json_decode($data,true);
echo '<pre>';
var_dump($data);echo '<br>';
foreach ($data as $key => **&$value**) {//这里不加&就修改不了
$value['num'] = '10';
}
var_dump($data);
}
最佳答案
-
&代表取引用,一般用于函数入参,代表在函数内直接引用变量的原始值。如果没有加&,在函数内对入参的修改是不会影响到外面的变量的。比如:
function add($a) { $a += 1; echo $a; } $a = 1; add($a); echo $a; function add2(&$a) { $a += 1; echo $a; } add2($a); echo $a;
foreacch
语句你可以理解为一个特殊的“函数”,$key,$value可以理解为函数的入参,如果你在foreach遍历语句内需要修改原始值,必须得加&代表传引用进来。当然,如果是引用类型(某class的实例)这种,你不加&也可以在函数内修改原始值,比如:
class A { public $b = 1; } function add(A $a) { $a->b += 1; echo $a->b; } $a = new A; add($a); echo $a->b;
共 1 条回复
其他 1 个回答
xyf90314
注册时间:2015-03-04
最后登录:2023-03-13
在线时长:95小时23分
最后登录:2023-03-13
在线时长:95小时23分
- 粉丝21
- 金钱5257
- 威望40
- 积分6607