PHP 引用(&)

变量引用

案例:

<?php
//变量单独引用
$test = "a string!\n";
$quote = &$test;

echo $test; //a string!
echo $quote;//a string!

$quote = "exchange!\n";
echo $test; //exchange!
echo $quote;//exchange!

unset($quote);
echo $test; //exchange!

//函数传参引用
$num = 10;
echo $num."\n";
test($num);
echo $num."\n";

function test( &$num) {
    $num += 10;
}

结论

PHP 的变量引用相当于不同的变量都指向同一个内容。也会操作这一份内容,如果删除其中一个引用,另外一个引用不受影响,相当与删除的变量不在指向同一个内容,但是不能为常量。(相当于一个人有好多个名字,及时去掉一个名字,也不会影响人这个实体)

函数引用返回

案例1:

<?php

$t = test(); // 1
var_dump($t); // int(1)
$t = 20; $t = test(); //2
var_dump($t); //int(2)
$t = &test(); //3
var_dump($t) ; //int(3)
$t = 20; $t = test(); //21
var_dump($t); //int(21)

function &test() {
    static $test = 0;
    $test += 1;
    echo $test."\n";
    
    return $test;   
}


案例2:

?php

$t = test();

function &test() {
    static $test = 0;
    $test += 1;
    echo $test."\n";
}


$ php test.php 
1
PHP Notice:  Only variable references should be returned by reference in /home/q/www/zt.dujia.qunar.com/test.php on line 9 

结论:

 相当于 $t = &test; 说白了还是 变量之间的引用。

对象引用

案例:

<?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
?>

综上实例可以看出,引用,其实就是一个变量空间,赋予了多个操作名称,这些操作名称,都指向同一个操作空间,其中一个操作名称对其空间操作,其他操作名称得到的结果也会变化。

引用的作用:
一般来说,每次声明一个变量,其就会占用一定的空间。
函数传参的方便,直接修改原有空间的内容,同时也减少中间变量的空间的开销。

发布了236 篇原创文章 · 获赞 145 · 访问量 44万+

猜你喜欢

转载自blog.csdn.net/u011944141/article/details/100563907