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 に答える