2015-07-15 5 views
-1

Я работаю над приложением, которое получает данные из API Runkeeper. Как и во многих API, результаты разбиваются на страницы. Я пытаюсь объединить эти страницы в один массив, который в конечном итоге хранится как JSON на сервере.Метод PHP не возвращает значение

Получение и объединение результатов все работает, но когда я пытаюсь вернуть массив (или любое значение), я ничего не получаю. Если я напечатаю массив, я увижу свои результаты. Даже эхо в условном режиме работает, это просто не возвращение.

Может ли кто-нибудь увидеть ошибку моих путей?

function getAllRunkeeperActivity($activities = '', $url = '/fitnessActivities'){ 


    if(empty($activities)){ 
     $activities = array(); 
    } 

    $page = $this->getRunKeeperData($url); 



    foreach($page->items as $item){ 
     $activities[] = $item; 
    } 

    if(isset($page->next)){ 

     // Getting another page 
     $this->getAllRunkeeperActivity($activities, $page->next); 

    } else { 
     // return the result 
     echo 'Return ' . count($activities) . ' items' . "\r\n"; // This happens 

     // if I print_r $activities I get the expected array information 

     return $activities; // this does not 
    } 


} 
+1

Операция 'return' находится внутри вашего предложения' else' - это то, где вы ожидаете возвращаемого значения? – sbeliv01

+1

у вас есть только один ** возврат ** в заявлении else ... проверьте свой код и исправьте его! – donald123

+0

Как вы называете этот метод? – AbraCadaver

ответ

2

Ваша функция возвращает значение, если нет $ page-> следующего значения, т.е. последний элемент.

НО, он возвращает его к вызову функции из предыдущего элемента, а не оригинального. Там умирает.

В первом состоянии, вы должны использовать

return $this->getAllRunkeeperActivity($activities, $page->next); 

так, что ответ получает передается обратно вверх по цепочке.

+0

Отлично! Я соглашусь, когда смогу. Спасибо. – philsbury

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