其实这个涉及到的是一个引用传递
的问题,在官方手册中明说了,对象
会被引用传递。
也就是说如果你传递的是一个对象,那么默认就会是原实例,如果是其他类型的,就将会是一个新的拷贝。
如你的代码,如果想要实现你想要的效果,只需要在方法声明的形参前面加上引用符号 &
,即可。
$arr = array(1, 2, 3);
function func (&$brr) {
$brr[0] = 10;
}
func($arr);
print_r($arr);
这样,你就会得到一个理想的结果
Array
(
[0] => 10
[1] => 2
[2] => 3
)
这个引用也是比较隐晦的,比如下图中,如果你不去运行一下,你很难猜出结果来。
参考资料
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…