2013-03-18 31 views
2

我知道函數中的符號意味着什麼,這意味着您必須通過地址傳遞變量。但是我還沒有遇到一個場景,我需要通過一些變量作爲地址。你們能爲我澄清一下嗎?例如像何時傳遞變量作爲函數中的地址php

function dollarx($x) { 
    echo $x[1]; 
} 

function dollar(&$x) { 
    echo $x[1]; 
} 

$x[0] = 1; 
$x[1] = 2; 

兩個函數顯示相同的

+0

代替'echo $ x [1];'try'$ x [1] = 4;'然後'var_dump($ x);'調用每個函數之前和之後(它被稱爲pass-by-引用不是地址) – Waygood 2013-03-18 16:04:05

+3

如果你在你的函數中改變'$ x,那麼區別就在於例如'echo $ x [1] ++;' – 2013-03-18 16:04:14

+0

var_dump做什麼? – 2013-03-18 16:06:51

回答

4

傳遞「通過引用」當你想要的功能,能夠以更新變量的值。

例如:

function dollar(&$x){ 
    $x[1] = 12; 
} 

$x = array(1, 2); 
dollar($x); 

var_dump($x); // array(1, 12); 
+0

7分鐘,直到你得到正確的答案。大聲笑 – 2013-03-18 16:09:25

0

你可以使用它有一個功能集變量您。例如,你可以讓一個函數返回一個包含結果的數組,或者你可以通過引用使用變量。

function GetUsernameAndEmailAddress(&$user, &$email) { 
    //get values from database or session or whatever. 

    $user = 'username'; 
    $email = '[email protected]'; 
} 


$username = ''; 
$email = ''; 
GetUsernameAndEmailAddress($username, $email); 

echo 'Hello '. $username. '. I have sent an e-mail to '.$email;