php常量和變量之變量引用
變量引用
變量引用很多老師喜歡來(lái)用C語(yǔ)言的指針來(lái)去講解。我們作為有這么多年開發(fā)和教學(xué)經(jīng)驗(yàn)的人來(lái)說(shuō)——大多數(shù)學(xué)習(xí)PHP的人來(lái)說(shuō)根本不了解C語(yǔ)言。
使用C語(yǔ)言一指針來(lái)講解變量引用,我們覺(jué)得畫蛇填足。并且,不利于沒(méi)有C語(yǔ)基礎(chǔ)的朋友們學(xué)習(xí)。
關(guān)于變量引用的知識(shí)點(diǎn),請(qǐng)以我們的講解為理解的基準(zhǔn)!
我們來(lái)對(duì)比兩段代碼的執(zhí)行結(jié)果:
第一段代碼,沒(méi)有任何區(qū)別。跟我們?cè)械腜HP代碼一模一樣:
<?php $fo = 5; //$fo的值為5,將5賦值 $bar = $fo; //$bar的值原來(lái)為5,現(xiàn)在將值改為6 $bar = 6; //$bar的結(jié)果為6 echo $bar.'<br />'; //$fo的結(jié)果為5 echo $fo.'<br />'; ?>
第二段代碼:
<?php $fo = 5; //注意,加上了一個(gè)&符喲 $bar = &$fo; $bar = 6; //$bar的結(jié)果為6 echo $bar.'<br />'; //$fo的結(jié)果為6 echo $fo.'<br />'; ?>
為什么兩個(gè)結(jié)果都變成6了呢?
我經(jīng)常跟大家這樣來(lái)舉例。我們可以這樣來(lái)想象:一個(gè)變量名,對(duì)應(yīng)了一個(gè)數(shù)據(jù)值。如下圖:
而加上&(and 符后),把變量指向同一個(gè)存值空間了,如下圖:
也就是不論$fo或$bar的值如何發(fā)生變化,$fo變$bar也變,$bar發(fā)生變化,$fo也會(huì)發(fā)生變化。
舉個(gè)不靠譜的例子,方便你來(lái)理解:
你家有只小狗,叫作旺財(cái)。又有一只小狗叫作狗蛋。有一天,你把狗蛋給吃了。把狗蛋這個(gè)名字給了旺財(cái)
那么,你不論是打狗蛋一下,還是打旺財(cái)一下都是打的同一條狗。
注:如果你理解、了解、熟悉C語(yǔ)言的指針??勺孕杏弥羔?lè)绞絹?lái)理解,不在本文的討論范圍內(nèi)。