duanchigeng4313 2015-07-15 17:28
浏览 96
已采纳

PHP方法没有返回值

I'm working on an app that gets data from the Runkeeper API. As with many APIs the results are broken down into pages. I'm trying to join these pages into one array that ultimately is stored as JSON on the server.

Getting and joining the results all works, but when I try to return the array (or any value) I get nothing. If I print the array I see my results. Even the echo within the conditional is working, it's just not the return.

Can someone see the error of my ways?

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' . "
"; // This happens

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

        return $activities; // this does not
    }


}
  • 写回答

1条回答 默认 最新

  • duanchifo2866 2015-07-15 17:37
    关注

    Your function returns a value if there is no $page->next value, ie. the last item.

    BUT, it's returning it to the function call from the previous item, not your original one. It dies there.

    In the first condition, you have to use

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

    so that the response gets passed back up the chain.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?