關于變量引用的知識點,請以我們的講解為理解的基準!
我們來對比兩段代碼的執(zhí)行結(jié)果。
第一段:
<?php $fo = 5; //$fo的值為5,將5賦值 $bar = $fo; //$bar的值原來為5,現(xiàn)在將值改為6 $bar = 6; //$bar的結(jié)果為6 echo $bar.'<br />'; //$fo的結(jié)果為5 echo $fo.'<br />'; ?>
第二段:
<?php $fo = 5; //注意,加上了一個&符喲 $bar = &$fo; //給$bar賦值為6 $bar = 6; //$bar的結(jié)果為6 echo $bar.'<br />'; //$fo的結(jié)果為6 echo $fo.'<br />'; ?>
為什么兩個結(jié)果都變成6了呢?
我經(jīng)常跟大家這樣來舉例。我們可以這樣來想象:一個變量名,對應了一個數(shù)據(jù)值。如下圖:
而加上&(and 符后),把變量指向同一個存值空間了,如下圖:
也就是不論$fo或$bar的值如何發(fā)生變化,$fo變$bar也變,$bar發(fā)生變化,$fo也會發(fā)生變化。
舉個不靠譜的例子,方便你來理解:
你家有只小狗,叫作旺財。又有一只小狗叫作狗蛋。有一天,狗蛋丟了。把狗蛋這個名字給了旺財,那么,你不論是打狗蛋一下,還是打旺財一下都是打的同一條狗
<?php $fo = 5; $bar = $fo; $bar = 'hello,PHP中文網(wǎng)'; echo $fo; ?>