变量的引用
&可以把变量的地址取出,但是不能echo出地址值
<?php
$a = 10;
$b = &$a;
echo &$a; //网页显示错误
?>
变量的引用内存图:
变量的引用需要注意的几项
只有变量才能引用,也就是说变量才有内存地址。
<?php
$a = 10;
$b = &$a;
echo &$a; //网页显示错误
echo &10; //网页显示错误,只有变量才能引用
?>
引用关系一旦达成,一个变量值改变,另一个也随之改变 。
<?php
$a = 10;
$b = &$a;
$a = 100;
echo $b; //输出结果为100,$a改变了$b也随之改变
?>
unset一个变量时,只是清除一个函数,引用关系也解除了,但另一个变量还存在。
<?php
$a = 10;
$b = &$a;
unset($a); //清除变量#a,$b还在
if (isset($b)) {
echo "这个变量存在";
} else {
echo "这个变量不存在";
}
?>
如果两个变量有引用关系,给其中一个变量赋值,不是普通值,而是一个新的引用关系,则解除原来的引用关系,产生新的引用关系。
<?php
$a = 10;
$b = &$a;
$c = 100;
$b = &$c; //产生新的引用关系,原来的关系解除,所以 $B $c都是100
echo $a;
echo "<br />";
echo $b;
echo "<br />";
echo $c;
?>
//输出结果:10、100、100