php常數和變數之變數引用LOGIN

php常數和變數之變數引用

變數引用

變數引用很多老師喜歡來用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了呢?

我常常跟大家這樣來舉例。我們可以這樣想:一個變數名,對應了一個資料值。如下圖:

2015-08-02_55bdc64daf9e3.png

而加上&(and 符後),把變數指向同一個存值空間了,如下圖:

2015-08-02_55bdc68312f9b.png

也就是不論$fo或$bar的值如何發生變化,$fo變$bar也變,$bar發生變化,$fo也會改變。

舉個不靠譜的例子,方便你來理解:
你家有隻小狗,叫作旺財。又有一隻小狗叫作狗蛋。有一天,你把狗蛋吃了。把狗蛋這個名字給了旺財

那麼,你不論是打狗蛋一下,還是打旺財一下都是打的同一隻狗。


註:如果你理解、了解、熟悉C語言的指標。可自行用指針方式來理解,不在本文的討論範圍內。

下一節
<?php $fo = 5; //注意,加上了一个&符哟 $bar = &$fo; $bar = 6; //$bar的结果为6 echo $bar.'<br />'; //$fo的结果为6 echo $fo.'<br />'; ?>
章節課件