<?php
function sum($y) {
$y = $y + 5;
}
$x = 5;
sum($x);
echo $x;
?>
所以我有這個代碼。問題是:它輸出了什麼?答案:5.我怎樣才能輸出10?答案:總和(& $ x)。通過引用傳遞與值傳遞
問題是我不明白爲什麼第一個問題的答案是5.當你做sum($ x)時,它不應該用$ x代替函數,所以$ x = 5 + 5 = 10?爲什麼答案是5?我真的不明白。有人向我解釋了一些與指針和地址有關的東西,但我不明白。我從來沒有理解指針的概念,我GOOGLE了它,顯然在PHP中沒有指針,所以我超級困惑。我的朋友說,一個變量是由一個值和內存地址組成的。有人能像我5歲那樣解釋我爲什麼答案是5而不是10?請
的'價值$ X + 5'不放回'$ x'而是轉換成'$ y',它只存在於'sum($ y)'函數的範圍內。 – x13
但爲什麼會發生?我知道我的問題真的很愚蠢。我的意思是,sum($ x)不是$ x = $ x + 5?爲什麼它回到$ y?總和($ x)是否意味着用$ x替換$ y? –
默認情況下,它會創建'sum'($ y)'函數中使用的名爲'$ y'的'$ x'的'重複',此時'$ x'和'$ y'除了巧合)他們的價值。 '$ y'增加了5,但'$ x'在任何地方都沒有提及。如果你把'$ y'作爲'sum(&$ y)'放在參數列表中,它不會創建一個新的重複,而是引用'$ x'。這是在用戶的電話號碼上寫下某個人的電話號碼和寫在郵箱上的區別,你可以找到他們的電話號碼。 – x13