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

И призывает к $ вернуться [ 'код'] и $ возвращение [ 'электронная почта'] выполнены с предупреждением: Illegal строка смещения. Что я делаю не так?

+0

Ваш метод вызова функции неверна , сделайте это, как любой из трех ответов (Мэтью Мак правит, Тим Хельге или Дом) – Zeddy

ответ

4

Вы вызываете функцию и возвращаете значение, но вы не берете возвращаемое значение.

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

+0

Отлично, я думал, что это будет что-то глупое, как будто я не замечал. Благодаря! Сейчас работает как шарм. – Roy

+0

Нет проблем, не забудьте принять и получить удовольствие от кодирования :) – MatthewMcGovern

2

Вам необходимо присвоить возвращаемое значение переменной:

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

return $register не означает, что функция будет создавать в вызывающей рамки переменной $register, а то, что он будет верните содержимое $register в область вызова, которая затем должна выяснить, что с ним делать, например присваивая его переменной.

1

Вы должны сделать $return = register($email, $username, $password);

1

ошибка была при вызове функции:

register($email, username, password); 

думает будет лучше, если вы:

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