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

Posted 25-lh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018/03/20 变量引用-对象引用相关的知识,希望对你有一定的参考价值。

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

--

变量的引用

$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 变量引用-对象引用的主要内容,如果未能解决你的问题,请参考以下文章

Fragment 的 GetTag 返回空对象引用

Thymeleaf引用片段传入参数

中继:预计会收到一个对象,其中传播了`...MyComponent_user`,但未找到片段引用`

Java中对象的引用[关闭]

返回C ++引用变量的做法是邪恶的吗?

引用变量,而不是对象