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 条评论
登录 后参与评论

相关文章

来自专栏无所事事者爱嘲笑

获取url参数的精简代码

1054
来自专栏Golang语言社区

Golang语言--闭包和普通函数调用区别

代码: ? 运行这段程序,输出结果为 1 2 3 3 2 1 这里就是普通的函数调用,每次调用func p时,完成 i 的值复制,然后打印,此时 i 值复制了3...

2536
来自专栏技术之路

详解JavaScript闭包

  要想完全明白JavaScript的闭包,要先明白js中的一些基础原理,然后我再给出一些例子来讲解闭包。   在执行JavaScript时会创建一个执行环境(...

23710
来自专栏Golang语言社区

【Go 语言社区】go 学习中遇到一些语法问题

1.可变参数,传入数组的饿时候,必须加三个... func sums(nums ...int){} nums := []int{1, 2, 3, 4, 5}...

33911
来自专栏calmound

Xtu 1150 Assembly Line

http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id/1150 题意:任意多个ABC三个数,...

2657
来自专栏赵俊的Java专栏

删除排序数组中的重复数字Ⅱ

1422
来自专栏知道一点点

sass入门学习篇(二)

一,sass有两种后缀名文件:一种后缀名为sass,不使用大括号和分号;另一种就是我们这里使用的scss文件,建议scss.

702
来自专栏老马说编程

计算机程序的思维逻辑 (8) - char的真正含义

看似简单的char 通过前两节,我们应该对字符和文本的编码和乱码有了一个清晰的认识,但前两节都是与编程语言无关的,我们还是不知道怎么在程序中处理字符和文本。 ...

1626
来自专栏Go入门系列

Golang 入门系列(三)Go语言基础知识汇总

前面已经了 Go 环境的配置和初学Go时,容易遇到的坑,大家可以请查看前面的文章 https://www.cnblogs.com/zhangweizhong/c...

412
来自专栏抠抠空间

集合 (set) 的增删改查及 copy()方法

简介: 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点: 1、...

26111

扫描关注云+社区