【问题标题】:PHP Angularjs JSON multiple API ResponsesPHP Angularjs JSON 多个 API 响应
【发布时间】:2018-03-13 14:38:24
【问题描述】:

我正在使用电影 api(https://www.themoviedb.org/documentation/api),该 api 每页只给我 20 个结果,我想得到 60 个,所以我对 3 个页面发出 3 个请求。 我不知道我是否必须使用 json 编码或解码响应,但这适用于第一个结果列表:

$url1 = "http://api.themoviedb.org/3/movie/upcoming?api_key=###&page=1&language=de";
    $url2 = "http://api.themoviedb.org/3/movie/upcoming?api_key=###&page=2&language=de";
        $url3 = "http://api.themoviedb.org/3/movie/upcoming?api_key=###&page=3&language=de";

$response1 = file_get_contents($url1);
$response2 = file_get_contents($url2);
$response3 = file_get_contents($url3);

echo $response1;

我不知道如何将第二个和第三个请求的结果放入'results'中:

棱角部分

a.filme = []; //declare an empty array

            $http({
              method: 'GET',
              url: 'data/call-api.php'
            }).then(function (response){
                a.filme = response.data.results;
                console.log(response.data);
            },function (error){
                console.log("JSON konnte nicht geladen werden: " + error.status + error.statusText);
            });

api (http://api.themoviedb.org/3/movie/upcoming?api_key=###&page=1&language=de) 在浏览器中的响应如下所示:

提前致谢:)

【问题讨论】:

    标签: php angularjs arrays json


    【解决方案1】:

    假设您只需要结果。

    $url1 = "http://api.themoviedb.org/3/movie/upcoming?api_key=###&page=1&language=de";
    $url2 = "http://api.themoviedb.org/3/movie/upcoming?api_key=###&page=2&language=de";
    $url3 = "http://api.themoviedb.org/3/movie/upcoming?api_key=###&page=3&language=de";
    
    //extract results from each response and merge to single array
    $response1 = json_decode(file_get_contents($url1),true)["results"];
    $response2 = json_decode(file_get_contents($url2),true)["results"];
    $response3 = json_decode(file_get_contents($url3),true)["results"];
    
    echo json_encode(array_merge($response1,$response2,$response3));
    

    【讨论】:

      【解决方案2】:

      如果你只在结果列表之后你可以使用:

      $apiKey = "###";
      
      $out = [];
      for ($i = 1; $i <= 3; $i++) {
          $url = "http://api.themoviedb.org/3/movie/upcoming?api_key=".$apiKey."&page=".$i."&language=de";
          $response = file_get_contents($url);
      
          if (is_array($response->results)) {
              $out = array_merge($out, $response->results);
          }
      }
      
      echo json_encode($out);
      

      在 Angular 中只需使用 console.log(response);

      【讨论】:

        猜你喜欢
        • 2018-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-11
        • 1970-01-01
        相关资源
        最近更新 更多