php里面的形参和实参?
$arr = array(1, 2, 3);function func ($brr) {
$brr[0] = 10;
}
func($arr);
print_r($arr);
// 结果如下
(
[0] => 1
[1] => 2
[2] => 3
)
现象:原数组没有被改变
问题:php中好像,形参改变不了实参?实参给形参传值,是不是把实参复制了一份,传给了形参?
回答
其实这个涉及到的是一个引用传递
的问题,在官方手册中明说了,对象
会被引用传递。
也就是说如果你传递的是一个对象,那么默认就会是原实例,如果是其他类型的,就将会是一个新的拷贝。
如你的代码,如果想要实现你想要的效果,只需要在方法声明的形参前面加上引用符号 &
,即可。
$arr = array(1, 2, 3);function func (&$brr) {
$brr[0] = 10;
}
func($arr);
print_r($arr);
这样,你就会得到一个理想的结果
Array(
[0] => 10
[1] => 2
[2] => 3
)
这个引用也是比较隐晦的,比如下图中,如果你不去运行一下,你很难猜出结果来。
参考资料
以上是 php里面的形参和实参? 的全部内容, 来源链接: utcz.com/a/33566.html