官方文档
php引用
1. 变量的引用
php的引用允许两个变量指向同一个内容1
2
3
4
5
6
7
$a = 10;
$b =& $a;
echo $a, $b; // 10, 10
$b = 20;
echo $a, $b; // 20, 20
2. 函数的引用传递
1 |
|
3. 函数的引用返回
1 |
|
没有加&, 跟普通的函数调用没有区别。
而引用返回的作用,相当于把$b的内存地址返回,赋值给$a,使得$a, $b的内存地址指向同一个地方,即相当于执行了($a =& $b;)
更多的是使用在对象中:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Foo
{
public $value = 42;
public function &getValue()
{
return $this->value;
}
}
$obj = new Foo;
$myValue = &$obj->getValue();
echo $myValue; // 42;
$obj2 = new Foo;
$obj2->value = 2;
$myValue =& $obj2->getValue();
echo $myValue; // 2
写时复制
php一个比较重要的内部机制是写时复制1
2
3
4
5
$a = 10;
$b = $a; // 此时$b, $a 指向同一地方
$b = 20; // 在写入时,才会给$b 额外分配存储空间
性能优化
本来之前了解的,使用引用传递能够提高运行效率,本机测试也是能提高30%左右。不过看这篇文章,介绍引用坑大于利,所以不再推荐。文章地址:https://zhuanlan.zhihu.com/p/35107602
参考文章:https://www.cnblogs.com/xiaochaohuashengmi/archive/2011/09/10/2173092.html