使用php循环遍历来自url的json数据

时间:2017-09-21 01:57:25

标签: php json

您好我正在尝试回复从api返回的数据,我正在使用以下代码:

<?php

ini_set("include_path", '/home/matthewt/php:' . ini_get("include_path") );
// This sample uses the Apache HTTP client from HTTP Components 
(http://hc.apache.org/httpcomponents-client-ga/)
require_once 'HTTP/Request2.php';

$url = $request->getUrl();

$headers = array(
    // Request headers
    'Ocp-Apim-Subscription-Key' => 'my_id',
);

$request->setHeader($headers);

$parameters = array(
    // Request parameters
);

$url->setQueryVariables($parameters);

$request->setMethod(HTTP_Request2::METHOD_GET);

// Request body
$request->setBody("{body}");

try
{
    $response = $request->send();
    echo $response->getBody();
}
catch (HttpException $ex)
{
    echo $ex;
}

直到这一点为止所做的一切都很有效,并返回基本上如下所示的json数据:(我缩短了字段数量以节省空间)

[{&#34;游戏ID&#34;:49810&#34;季节&#34;:2017},{&#34;游戏ID&#34;:49811&#34;季节&#34;:2017 }]

我需要知道的是如何遍历这些数据以打印出每个游戏的结果。我知道我必须使用这样的东西:

$arr = json_decode();

foreach($arr as $item) { //foreach element in $arr
    $game_id = $item['GameID']; //etc
}

但我不确定需要解码的是什么......是$ response?

由于

1 个答案:

答案 0 :(得分:0)

如果$response->getBody()包含你的json,那么json_decode它,那么这将是你可以循环的对象数组。

所以试试这个:

// snip
try
{
    $response = $request->send();
    $arr = json_decode($response->getBody());

    foreach((array) $arr as $item) { //foreach element in $arr
        echo $item->GameID; //etc
        echo $item->Season; //etc
    }
}
catch (HttpException $ex)
{
    echo $ex;
}