php中引用&的真正理解-变量引用函数引用对象引用

Posted 会学习的猪

tags:

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

  php的引用(就是在变量或者函数、对象等前面加上&符号) //最重要就是 删除引用的变量 ,只是引用的变量访问不了,但是内容并没有销毁 在PHP 中引用的意思是:不同的名字访问同一个变量内容.

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

复制代码
 
<?php
$instance = 1;
$assignment = $instance;
$quote =& $instance;
echo $instance;//这里输出:1
echo $assignment;//这里输出:1
echo $quote;//这里输出:1
$instance=2;
echo $instance;//这里输出:2
echo $assignment;//这里输出:1
echo $quote;//这里输出:2
?>
复制代码

对象的赋值和引用

复制代码

<?php

$instance = new StdClass();

$assigned = $instance;
$reference =& $instance;

$instance->var = \'test\';

var_dump($instance);/*object(stdClass)[1]
public \'var\' => string \'test\' (length=4)
*/
var_dump($reference);/*object(stdClass)[1]
public \'var\' => string \'test\' (length=4)
*/
var_dump($assigned);/*object(stdClass)[1]
public \'var\' => string \'test\' (length=4)
*/

$assigned->var = \'test1\';

var_dump($instance);/*object(stdClass)[1]
public \'var\' => string \'test1\' (length=4)
*/
var_dump($reference);/*object(stdClass)[1]
public \'var\' => string \'test1\' (length=4)
*/
var_dump($assigned);/*object(stdClass)[1]
public \'var\' => string \'test1\' (length=4)
*/

$instance = null;// $instance and $reference become null

var_dump($instance); // null
var_dump($reference);//null
var_dump($assigned);/*object(stdClass)[1]
public \'var\' => string \'test1\' (length=4)
*/
?>

复制代码

      以上代码是在php5.5中运行的效果,在php5中赋值是通过引用来实现的。通俗的讲 如果有下面的代码 $a="abc"; $b=$a;  其实此时 $a与$b都是指向同一内存地址,而并不是$a与$b占用不同的内存。如果在上面的代码基础上再加上如下代码  $a="efg";  由于$a与$b所指向的内存的数据要重新写一次了,此时Zend核心会自动判断 自动为$b生产一个$a的数据拷贝,重新申请一块内存进行存储

以上是关于php中引用&的真正理解-变量引用函数引用对象引用的主要内容,如果未能解决你的问题,请参考以下文章

php中引用&的真正理解-变量引用函数引用对象引用

理解 php 中& 引用

php引用(&)变量引用,函数引用,对象引用和参数引用用法

PHP引用(&)使用详解

php & 变量引用函数引用对象引用

&引用符号的理解