2013-04-29 42 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);