变量引用
变量引用很多老师喜欢来用C语言的指针来去讲解。我们作为有这么多年开发和教学经验的人来说——大多数学习PHP的人来说根本不了解C语言。
使用C语言一指针来讲解变量引用,我们觉得画蛇填足。并且,不利于没有C语基础的朋友们学习。
关于变量引用的知识点,请以我们的讲解为理解的基准!
我们来对比两段代码的执行结果:
第一段代码,没有任何区别。跟我们原有的PHP代码一模一样:
<?php $fo = 5; //$fo的值为5,将5赋值 $bar = $fo; //$bar的值原来为5,现在将值改为6 $bar = 6; //$bar的结果为6 echo $bar.'<br />'; //$fo的结果为5 echo $fo.'<br />'; ?>
第二段代码:
<?php $fo = 5; //注意,加上了一个&符哟 $bar = &$fo; $bar = 6; //$bar的结果为6 echo $bar.'<br />'; //$fo的结果为6 echo $fo.'<br />'; ?>
为什么两个结果都变成6了呢?
我经常跟大家这样来举例。我们可以这样来想象:一个变量名,对应了一个数据值。如下图:

而加上&(and 符后),把变量指向同一个存值空间了,如下图:

也就是不论$fo或$bar的值如何发生变化,$fo变$bar也变,$bar发生变化,$fo也会发生变化。
举个不靠谱的例子,方便你来理解:
你家有只小狗,叫作旺财。又有一只小狗叫作狗蛋。有一天,你把狗蛋给吃了。把狗蛋这个名字给了旺财
那么,你不论是打狗蛋一下,还是打旺财一下都是打的同一条狗。
注:如果你理解、了解、熟悉C语言的指针。可自行用指针方式来理解,不在本文的讨论范围内。
下一节
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
":""}
搞错了把,后声明的$bar 的值会影响前面的$fo变量值,而第一个无论改成什么都会和第二个值保持一样,不信你试试。老师说的也就是不论$fo或$bar的值如何发生变化,$fo变$bar也变,$bar发生变化,$fo也会发生变化。 不正确
知否5年前
变量引用:当变量引用时 使用了& 符号时
&(and 符后),把变量指向同一个存值空间了,不论$fo或$bar的值如何发生变化,$fo变$bar也变,$bar发生变化,$fo也会发生变化。
0
࿐6年前
$fo = 5; //在变量$fo前加了一个&符,相当于将$bar变量和$fo变量指向了同一个存值空间 //其中一个变量的值发生变化,另外一个也随之发生变化 $bar = &$fo; $bar = 6;
0
博龙8年前
&(and符号后),把变量指向同一个存值空间了。
<?php $fo = 6; $to = &$fo; $to = 5; echo $fo; echo '<br>'; echo $to; ?>
0