2009-02-28 96 views
18

只是一個快速和毫無疑問容易的問題。我對PHP很陌生,正在瀏覽一些現有的代碼。我試圖找到在谷歌我的問題的答案,但無濟於事。'&'參數名稱前

有人請讓我知道'&'符號在參數$ var之前嗎?

function setdefault(&$var, $default="") 
{ 
    if (! isset($var)) 
    { 
    $var = $default; 
    } 
} 

回答

46

通過引用傳遞。

咦? 通過引用傳遞意味着您傳遞變量的地址而不是值。基本上你正在製作一個指向變量的指針。

http://us.php.net/language.references.pass

+6

+1對於** Huh **,讓我笑了 – 2014-03-13 12:45:08

1

&裝置通過按引用;該代碼做的是檢查傳遞給該函數的變量是否實際存在於全局範圍內。如果沒有&它會嘗試首先獲取變量的副本,如果該變量不存在,將導致錯誤。

19

這意味着函數獲取參數$var的原始值的引用,而不是該值的副本。

例子:

function add(&$num) { $num++; } 

$number = 0; 
add($number); 
echo $number; // this outputs "1" 

如果add()不會在函數簽名的符號,標誌,回聲會輸出「0」,因爲原來的值沒有改變。

2

這意味着您通過引用http://ca3.php.net/language.references.pass傳遞變量。簡單地說,這意味着函數獲取實際變量而不是變量的副本。您在該函數中對該變量所做的任何更改都將在調用方中進行鏡像。