在PHP 中引用的意思是:不同的名字访问同一个变量内容。

<?php$a = "date";
$b = &$a;echo $a; // dateecho $b; // date$b = "date1";echo $a; // date1echo $b; // date1unset($a);echo $b; // date1?>

就是给$a增加了一个别名$b,如果删除了$a,只是删除了这个变量的名字,并没有删除变量的内容,用别名还是可以把这个变量的内容显示出来。(如图关系)

php引用&符号详解_global

对象的引用

<?phpclass a{var $abc="ABC";
}
$b=new a;
$c=$b;echo $b->abc;//这里输出ABCecho $c->abc;//这里输出ABC$b->abc="DEF";echo $c->abc;//这里输出DEF?>

以上代码是在PHP5中的运行的效果,在PHP5中 对象的复制 是通过引用来实现的。

上列中$b=new a; $c=$b; 其实等效于$b=new a; $c=&$b;

PHP5中默认就是通过引用来调用对象, 但有时你可能想建立一个对象的副本,并希望原来的对象的改变不影响到副本。 为了这样的目的,PHP定义了一个特殊的方法,称为__clone。

 

引用的作用

如果程序比较大,引用同一个对象的变量比较多,并且希望用完 该对象后手工清除它,建议用 "&" 方式,然后用$var=null的方式清除。其它时候还是用php5的默认方式吧.。

另外, php5中对于大数组的传递,建议用 "&" 方式, 毕竟节省内存空间使用。

取消引用

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

例如:

 <?php$a = 1;
$b =& $a;unset ($a);?>

不会 unset $b,只是 $a。

可以参看变量的引用那段

 

 global 引用

 

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

它等价于下面这段代码:

<?php$var =& $GLOBALS["var"];?>

这意味着,例如,unset $var 不会 unset 全局变量。

php引用&符号详解_global _02