PHP 中传值与传引用的区别

时间:2020-05-01

在 PHP 中引用意味着用不同的名字访问同一个变量内容

在PHP 中,变量名和变量内容是不一样的, 因此同样的内容可以有不同的名字

引用允许用两个变量来指向同一个内容

如果对一个未定义的变量进行引用赋值、引用参数传递或引用返回,则会自动创建该变量

如果在一个函数内部给一个声明为 global 的变量赋于一个引用,该引用只在函数内部可见。可以通过使用 $GLOBALS 数组避免这一点。

如果在 foreach 语句中给一个具有引用的变量赋值,被引用的对象也被改变。

引用不是指针

可以将一个变量通过引用传递给函数,这样该函数就可以修改其参数的值。

任何其它表达式都不能通过引用传递

引用返回用在当想用函数找到引用应该被绑定在哪一个变量上面时。不要用返回引用来增加性能,引擎足够聪明来自己进行优化。仅在有合理的技术原因时才返回引用!

和参数传递不同,这里必须在两个地方都用 & 符号——指出返回的是一个引用,而不是通常的一个拷贝,同样也指出 变量是作为引用的绑定,而不是通常的赋值。

当 unset 一个引用,只是断开了变量名和变量内容之间的绑定。这并不意味着变量内容被销毁了。

当用 global $var 声明一个变量时实际上建立了一个到全局变量的引用

在一个对象的方法中,$this 永远是调用它的对象的引用。