JSON使用PHP将数据提取到变量中

时间:2014-10-19 20:01:43

标签: php json youtube-api youtube-data-api

我正在使用YouTube数据API请求来获取频道ID,但我不太清楚为什么它不起作用:

我得到的返回JSON请求是:

{
     "kind": "youtube#channelListResponse",
     "etag": "\"PSjn-HSKiX6orvNhGZvglLI2lvk/k5qSWj-xcF96jAN3p1uQH1amSRc\"",
     "pageInfo": {
      "totalResults": 1,
      "resultsPerPage": 5
     },
     "items": [
      {
       "kind": "youtube#channel",
       "etag": "\"PSjn-HSKiX6orvNhGZvglLI2lvk/e1xTbLf6JLhwwzeWbdMfWdPfcwg\"",
       "id": "UC-lHJZR3Gqxm24_Vd_AJ5Yw"
      }
     ]
    }

要提取JSON数据我正在使用几行代码和php中的函数:

$banner_data = file_get_contents('https://www.googleapis.com/youtube/v3/channels?part=brandingSettings&forUsername=pewdiepie&key=AIzaSyDTxvTLWXStUrhzgCDptVUG4dGBCpyL9MY');
$banner_data = json_decode($banner_data, true);
$YTid = $banner_data['items']['id'];

当我:

echo "YouTube Channel Id Of pewdiepie is " . $YTid . ".<br />";

我没有获得频道ID?我的问题是什么?

2 个答案:

答案 0 :(得分:1)

Items是一个包含一个或多个对象的数组。所以它必须是:

 $YTid = $banner_data['items'][0]->id;

通过这种方式,您可以抓住“ID&#39;来自items-array中的第一项。

BTW:学习调试对于学习编码至关重要。如果您解码json然后打印结果,您可以看到数组的结构,这可以帮助您找到问题,如:

$banner_data = json_decode($banner_data, true);
var_dump($banner_data);

答案 1 :(得分:1)

请改为尝试:

    $YTid = $banner_data['items'][0]['id'];