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.

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

报告相同问题?

悬赏问题

  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常
  • ¥15 关于风控系统,如何去选择
  • ¥15 这款软件是什么?需要能满足我的需求
  • ¥15 SpringSecurityOauth2登陆前后request不一致
  • ¥15 禅道二次开发编辑版本,上传不了发行包