PHP的引用 & 与C语言的指针不一样,与C++的引用比较类似,可以看做是“别名”,也就是“你变成了我,我也变成了你”。
一、普通变量的引用
$fruits=array('apple','grape','watermelon');
$fruits_alias=&$fruits;
array_push($fruits_alias,'banana','pear');
var_dump($fruits);
array_pop($fruits);
var_dump($fruits_alias);
运行结果
array(5) { [0]=> string(5) "apple" [1]=> string(5) "grape" [2]=> string(10) "watermelon" [3]=> string(6) "banana" [4]=> string(4) "pear" }
array(4) { [0]=> string(5) "apple" [1]=> string(5) "grape" [2]=> string(10) "watermelon" [3]=> string(6) "banana" }
二、函数参数的引用
类似C语言的传址调用,函数会修改传入的参数
$calc=array('sum'=>0,'params'=>array());
function push_number($number,&$calc){
array_push($calc['params'],$number);
$calc['sum']=$calc['sum']+$number;
}
push_number(1, $calc);
push_number(2, $calc);
push_number(3, $calc);
var_dump($calc);
运行结果
array(2) { ["sum"]=> int(6) ["params"]=> array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } }
三、函数返回值引用
function &add($x){
static $result=0; //申明一个静态变量
$result+=$x;
return $result;
}
echo add(1).',';
echo add(2).',';
echo add(3);
运行结果
1,3,6
引用的取消可以用unset函数,请看下面示例
$a=1;
$b=&$a;
$c=&$a;
unset($a);
$b++;
$c++;
echo $b.' '.$c;
运行结果
3 3
说明b和c还是一样的,如果用$b===$c比较会返回true
本文详细介绍了PHP中的引用概念,与C语言和C++的引用进行了对比,通过实例展示了引用如何在PHP中实现数据共享与传递,并探讨了引用的取消与作用范围。
105万+

被折叠的 条评论
为什么被折叠?



