一、值传递和引用传递
二、在foreach 中的引用传递
public function actionR()
{
$a = [
'a'=>1,
'b'=>2,
];
foreach ($a as &$item){
$i = 100;
$item = $i;
}
$b = [
'a'=>1,
'b'=>2
];
foreach ($b as &$item){
$i = 99;
$item = $i;
}
var_dump($a,$b);
}
可见 在两个foreach 中&$item 并不相互修改值。
三、最容易出现的bug
public function actionR()
{
$values = [
'a'=>1,
'b'=>2,
];
foreach ($values as &$value){
$i = 100;
$value = $i;
}
$value = null;
var_dump($values);
}
数组$a 的 值被修改。在这简短的代码片段可能一眼就可以看出,但是在几十行的代码,很容易出错。
其实phpstorm 早就给提示了,写完后没有认真检查代码而导致这种极其不应该犯的错。