一、值传递和引用传递
二、在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 早就给提示了,写完后没有认真检查代码而导致这种极其不应该犯的错。