變數引用
變數引用很多老師喜歡來用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語言的指標。可自行用指針方式來理解,不在本文的討論範圍內。
下一節