2010-11-19 52 views
3

下面是輸出「15」的代碼,爲什麼?

function zz(&$x){ 

$x = $x + 5; 

} 

$x = 10; 

zz($x); 
echo $x; 

請解釋

+1

看起來像來自Zend的模擬考試的問題。 – Gordon 2010-11-19 14:17:48

+0

可能b但我在面試中被問到我回答錯誤..因此,想到把它放在這裏.. – 2010-11-19 14:22:24

+0

*(相關)* [這是什麼符號在PHP中的意思](http://stackoverflow.com/questions/3737139 /參考什麼 - 做 - 這個符號,均在-PHP) – Gordon 2010-11-19 14:24:40

回答

3

你傳遞的值作爲參數不是變量的直接值,而是它的傳遞通過引用,所以它給你15作爲輸出。

謝謝!

2

由於函數簽名定義了傳遞給函數的值應該通過引用傳遞。

如果你不知道這意味着什麼,我建議閱讀this paragraph on Wikipedia

6

按設計工作。通過使用&,您可以通過引用傳遞$x,這意味着該函數對該變量所做的任何操作都將對設置爲10的原始$x執行。

如果您使用

function zz($x) 

$x將留在10,因爲只有可變被傳遞給函數。

1

添加&表示您通過引用傳遞$ x變量。外部值在函數內被改變,而不是被改變的函數內的副本。

1

$x裏面的函數是一個引用,它和你函數外面的$x的值相同。

當函數接受帶有「&」的參數時,它的值不會被複制到在函數範圍內創建的新變量中,而是與給定參數相同的值的引用。

參見here

1

使用&和號:傳遞引用計算函數中的目的。

它只是改變原來的變量,並將其返回到同一個變量名稱,賦予它的新值。