0

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

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

4 回答 4

4

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

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

于 2013-04-29T13:21:15.387 回答
2

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

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

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

于 2013-04-29T13:21:31.087 回答
1

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

于 2013-04-29T13:21:38.123 回答
1

错误是当你调用你的函数时:

register($email, username, password);

如果你这样做会更好:

$return = register($email, $username, $password);
于 2013-04-29T13:22:42.013 回答