php引用符号详解 (基础回顾)

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

<?php

$a = "date";

$b = &$a;

echo $a; // date

echo $b; // date

$b = "date1";

echo $a; // date1

echo $b; // date1

unset($a);

echo $b; // date1

?>

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

对象的引用

<?php

class a{

var $abc="ABC";

}

$b=new a;

$c=$b;

echo $b->abc;//这里输出ABC

echo $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(phpdaily)

原文发表时间:2016-08-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大内老A

The .NET of Tomorrow

Ed Charbeneau(http://developer.telerik.com/featured/the-net-of-tomorrow/) Exciti...

32610
来自专栏落花落雨不落叶

canvas画简单电路图

65611
来自专栏杨龙飞前端

scrollto 到指定位置

2554
来自专栏张善友的专栏

Mix 10 上的asp.net mvc 2的相关Session

Beyond File | New Company: From Cheesy Sample to Social Platform Scott Hansel...

2627
来自专栏我和未来有约会

Silverlight第三方控件专题

这里我收集整理了目前网上silverlight第三方控件的专题,若果有所遗漏请告知我一下。 名称 简介 截图 telerik 商 RadC...

4065
来自专栏hbbliyong

WPF Trigger for IsSelected in a DataTemplate for ListBox items

<DataTemplate DataType="{x:Type vm:HeaderSlugViewModel}"> <vw:HeaderSlug...

4074
来自专栏Ceph对象存储方案

Luminous版本PG 分布调优

Luminous版本开始新增的balancer模块在PG分布优化方面效果非常明显,操作也非常简便,强烈推荐各位在集群上线之前进行这一操作,能够极大的提升整个集群...

3255
来自专栏C#

DotNet加密方式解析--非对称加密

    新年新气象,也希望新年可以挣大钱。不管今年年底会不会跟去年一样,满怀抱负却又壮志未酬。(不过没事,我已为各位卜上一卦,卦象显示各位都能挣钱...)...

4978
来自专栏张善友的专栏

Silverlight + Model-View-ViewModel (MVVM)

     早在2005年,John Gossman写了一篇关于Model-View-ViewModel模式的博文,这种模式被他所在的微软的项目组用来创建Expr...

3038
来自专栏跟着阿笨一起玩NET

c#实现打印功能

2932

扫码关注云+社区