2013-04-12 2 views
-4

У меня есть функция, которая сводится к тому, что-то вроде этого:PHP Функция возврата не присваивается переменной

function do_something_cool() { 
    return array(
     'key1' => 'value1', 
     'key2' => 'value2', 
    ); 
} 

Затем, позже в файле, эти четыре строки:

$var1 = array(); 
$var1 = do_something_cool(); 
print_r(do_something_cool()); 
print_r($var1); 

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

Я также попытался использовать array_merge, чтобы назначить массив, не повезло.

Я даже не знаю, с чего начать выяснять, что происходит.

Заранее спасибо. :)

+2

Я вижу по-другому http://codepad.viper-7.com/XhdX0Y –

+0

Скорее всего, ваш '$ var1 = do_something_cool();' имеет опечатку в вашем реальном коде. – Jon

+0

Вероятно, '$ var1' переписывается где-то, чего вы не заметили – Ejaz

ответ

2

Выполнить пример, так просто, как я отправил его, и он будет работать:

function do_something_cool() { 
    return array(
     'key1' => 'value1', 
     'key2' => 'value2', 
    ); 
} 

$var1 = array(); 
$var1 = do_something_cool(); 
print_r(do_something_cool()); 
print_r($var1); 

выход (как и ожидалось):

Array 
(
    [key1] => value1 
    [key2] => value2 
) 
Array 
(
    [key1] => value1 
    [key2] => value2 
) 

Это потому, что

$var1 = do_something_cool(); 

будет просто перезаписать $var1 с возвратным значением do_something_cool(). Нет скрытая магия.

Итак, я думаю, ваша проблема не такая простая, как та, которую вы опубликовали, и в вашем коде есть другие ошибки.

+0

http://sandbox.onlinephpfunctions.com/code/34e180b5f31bcb71393ca72b44427b3b6de7227b Вот песочница с кодом, если вы хотите добавить его в свой ответ! (с выходом, который он дает) –

+0

@HugoDozois Спасибо! :) – hek2mgl

Смежные вопросы