php引用变量是为了使用不同的变量名字来访问同一个变量内容。其使用方法就是在变量或者函数、对象等前面加上&符号。
php引用变量怎么理解
<?php
$a=1;
$b=$a;
$a=2;
echo $b;//输出结果为1
上面的程序很简单大家都能看懂,
<?php
$a=1;
$b=&$a;
$a=2;
echo $b;//输出结果为2
对比两段代码你会发现区别,第二段代码对$b
赋值的时候使用了引用变量$b=&$a
,也就是多了一个符号&
,但是结果却截然不同。
我们对$b
赋值的时候,$b
的值应该等于$a
的值1,随后我们对$a
重新赋值为2,但是没有对$b
进行赋值操作,那么为什么$b
的值会发生变化呢?
当我们定义变量的时候,php会在内存中开辟一块空间来存储变量,而由于php中COW机制(copy on write)的存在,$b=$a
操作并不会给$b
开辟空间,而是将指针指向$a
的内存空间。在$a=2
赋值操作中,由于COW,$a
会重新复制出一块内存空间,所以$a
的改变并不会影响$b
的值,因为它们是两个内存空间。而在使用了引用变量之后,$b
会一直指向$a
的内存空间,所以$b
的值会和$a
一起变化。
简单的说就是,内存空间就是一个房子,$a
的值就是房子里的东西,而引用变量就是在$a
指向的房子上再开辟一扇门,从此$b
的值也是房子里的东西,因为两个人指向的是同一个房子,所以“值”当然也是一样的喽。