2013-04-29 53 views
0

我有一個自定義函數,它意味着在成功完成時返回某些值。總之,相關的部分看起來像這樣:自定義函數丟失返回變量值

function register($email, $username, $password) 
{ 
.... 
$return = array(); 
$return['code'] = 4; 
$return['email'] = $email; 
var_dump($return); 
echo "<h1>SUCCESS</h1>"; 
return $return; 
} 

我可以確認的功能也確實達到這個階段,因爲剛剛發佈的代碼上面是一個SQL查詢,成功地增加了一行到數據庫,我也能看到「成功」的消息得到發佈。

函數內部的的var_dump返回如下:

array (size=2) 
'code' => int 4 
'email' => string '[email protected]' (length=13) 

到目前爲止,一切都很好。然而,如果我然後去實際調用這個函數$ return是空的。例如,如果我這樣做:

register($email, $username, $password); 
var_dump($return); 
echo "<h1>Return code & email: $return & ".$return['code']." ".$return['email']."</h1>"; 

函數運行成功,新用戶註冊,我看到「成功」,但我沒有得到$返回的數組返回。的var_dump返回此:

string '' (length=0) 

,並呼籲$返回[「代碼」]和$返回[「電子郵件」]的會見警告:非法串偏移。我究竟做錯了什麼?

+0

你調用方法的功能是不正確,作爲三個答案中的任何一個(馬修麥克統治,蒂姆赫爾格或大教堂) – Zeddy 2013-04-29 13:22:28

回答

4

您正在調用該函數並返回一個值,但是您沒有獲取返回值。

$return = register($email, $username, $password);

+0

非常好,我認爲這會是我可以忽略的東西。謝謝!現在就像魅力一樣。 – Roy 2013-04-29 13:23:31

+0

沒問題,別忘了接受並且玩得開心:) – MatthewMcGovern 2013-04-29 13:33:54

2

您需要的返回值賦值給一個變量:

$register = register($email, $username, $password); 

return $register並不意味着該函數將創建在呼叫範圍內可變$register,而是它會將$register的內容返回到調用範圍,然後必須弄清楚如何處理它,例如分配給一個變量。

register($email, username, password); 

認爲會更好,如果你這樣做:

1

,當你打電話給你的功能你必須做$return = register($email, $username, $password);

1

的錯誤是

$return = register($email, $username, $password);