码迷,mamicode.com
首页 > 其他好文 > 详细

2018/03/20 变量引用-对象引用

时间:2018-03-20 14:04:19      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:html   pos   删掉   直接   www   很多   对象   set   wan   

就目前的工作中的话,很少.

--

变量的引用

$a = ‘a‘;

$b = ‘b‘;

$c = &$a;

echo $a; // 输出 a
echo $b; // 输出 b
echo $c; // 输出 a

$a = ‘c‘;

echo $c; // 输出 c

PHP 的引用允许你用两个变量来指向同一个内容 

$a 和 $c 共用的是同一份内存空间

--

函数的传址调用 传址调用我就不多说了 下面直接给出代码

function test (&$a) { 
    $a = $a + 100; 
} 
$b = 1;

test($b); 

echo $b; // 输出101

如果你想修改全局变量,光写一个函数是不行的。

由于函数作用域,无法修改全局变量,所以使用 函数传址调用 可以修改全局变量

--

对象引用

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的方式清除.

--

清除引用

$a = 1; 
$b =& $a;
unset ($a);
echo $b; // 输出 1

是不是有点奇怪,明明他的引用已经被销毁了,怎么$b还有值?

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

 

PHP 会在删除变量的时候,会自动拷贝。

其实这样子,就是为了避免把$a给删掉,造成把$b也给删掉的问题。

 

参考日志:

  https://www.cnblogs.com/thinksasa/p/3334492.html

  https://www.cnblogs.com/wangtao_20/p/3411835.html

2018/03/20 变量引用-对象引用

标签:html   pos   删掉   直接   www   很多   对象   set   wan   

原文地址:https://www.cnblogs.com/25-lH/p/8608477.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!