php常數(shù)和變數(shù)之變數(shù)引用
變數(shù)引用
變數(shù)引用很多老師喜歡來用C語言的指標(biāo)來去講解。我們以一個有這麼多年開發(fā)和教學(xué)經(jīng)驗的人來說——大多數(shù)學(xué)習(xí)PHP的人來說根本不了解C語言。
使用C語言一指標(biāo)來講解變數(shù)引用,我們覺得畫蛇填足。並且,不利於沒有C語基礎(chǔ)的朋友學(xué)習(xí)。
關(guān)於變數(shù)引用的知識點(diǎn),請以我們的講解為理解的基準(zhǔn)!
我們來比較兩段程式碼的執(zhí)行結(jié)果:
第一段程式碼,沒有任何差別。跟我們原有的PHP程式碼一模一樣:
<?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的結(jié)果為6 echo $bar.'<br />'; //$fo的結(jié)果為6 echo $fo.'<br />'; ?>
為什麼兩個結(jié)果都變成6了呢?
我常常跟大家這樣來舉例。我們可以這樣想:一個變數(shù)名,對應(yīng)了一個資料值。如下圖:
而加上&(and 符後),把變數(shù)指向同一個存值空間了,如下圖:
也就是不論$fo或$bar的值如何發(fā)生變化,$fo變$bar也變,$bar發(fā)生變化,$fo也會改變。
舉個不靠譜的例子,方便你來理解:
你家有隻小狗,叫作旺財。又有一隻小狗叫作狗蛋。有一天,你把狗蛋吃了。把狗蛋這個名字給了旺財
那麼,你不論是打狗蛋一下,還是打旺財一下都是打的同一隻狗。
註:如果你理解、了解、熟悉C語言的指標(biāo)。可自行用指針方式來理解,不在本文的討論範(fàn)圍內(nèi)。