自定义函数丢失返回变量值

时间:2013-04-29 13:19:32

标签: php

我有一个自定义函数,用于在成功完成时返回某些值。简而言之,相关部分如下所示:

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

我可以确认该函数确实达到了这个阶段,因为在发布的代码上方是一个SQL查询,它成功地向数据库添加了一行,我还可以看到“SUCCESS”消息被发布。

函数内的var_dump返回以下内容:

array (size=2)
'code' => int 4
'email' => string 'test@test.com' (length=13)

到目前为止,这么好。但是,如果我然后去实际调用此函数$ return是空的。例如,如果我这样做:

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

该函数成功运行,注册了一个新用户,我看到了'SUCCESS',但我没有得到$ return数组返回。 var_dump返回:

string '' (length=0)

调用$ return ['code']和$ return ['email']会遇到警告:非法字符串偏移。我做错了什么?

4 个答案:

答案 0 :(得分:4)

您正在调用该函数并返回一个值,但您没有获取返回值。

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

答案 1 :(得分:2)

您需要将返回值分配给变量:

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

return $register并不意味着该函数将在调用范围中创建变量$register,而是它将$register的内容返回到调用范围,然后调用范围必须弄清楚如何处理它,例如将其分配给变量。

答案 2 :(得分:1)

您必须$return = register($email, $username, $password);

答案 3 :(得分:1)

错误就是你打电话给你的职能时:

register($email, username, password);

如果你这样做会认为会更好:

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