我有一个自定义函数,用于在成功完成时返回某些值。简而言之,相关部分如下所示:
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']会遇到警告:非法字符串偏移。我做错了什么?
答案 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);