0

最近,在 Stack Oveflow 社区的帮助下,我学会了如何使用从 Google API 获得的 JSON 数据。所以,我想我已经掌握了如何使用来自 Blogger 的 JSON 数据执行大致相同的操作,再次使用 Google API。

然而,它一直让我发疯。我似乎无法掌握如何获得我需要的数组的正确级别。

我想做的是选择一些博客文章,然后挑选信息并显示它。应该直截了当。

现在我的博客只有三个测试条目。我想看看是否可以遍历从 JSON 创建的数组以显示数据。如果我使用此代码:

$recentBlog = json_decode(file_get_contents("https://www.googleapis.com/blogger/v3/blogs/xxxxxxxxxxxxxxxxxxxx/posts?key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", true));

foreach ($recentBlog as $item)
{
    var_dump($item[0]);
}

...然后我只从数组中获取数据的第一项。这对我来说很有意义。我遍历了数组,但在每次调用时,我只要求该0位置的第一项。

所以我想我会这样做:

$recentBlog = json_decode(file_get_contents("https://www.googleapis.com/blogger/v3/blogs/xxxxxxxxxxxxxxxxxxxx/posts?key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", true));

$count = 0;
foreach ($recentBlog as $item)
{
    var_dump($item[$count]);
    $count = $count + 1;
}

...但我只得到第二项和第三项。我不再得到第一个项目。

我的代码有什么问题?

如果有帮助,这是我返回的关于 JSON 格式的Google 文档。

4

2 回答 2

2

您的 JSON 解码调用中的括号可能有误:

$recentBlog = json_decode(file_get_contents("https://[...]"), true);

请注意,我在file_get_contents()函数后面直接移动了一个括号。这种方式json_decode()将返回一个可迭代的数组。

于 2013-09-09T09:08:37.030 回答
0

您会得到如下响应。如果你想循环博客条目,你必须$recentBlog['items']在 foreach 中循环。

foreach ($recentBlog['items'] as $item)
{
    var_dump($item);
}

回复:

{
      "kind": "blogger#postList",
      "nextPageToken": "CgkIChiAkceVjiYQ0b2SAQ",
      "prevPageToken": "CgkIChDBwrK3mCYQ0b2SAQ",
      "items": [
        {
          "kind": "blogger#post",
          "id": "7706273476706534553",
          "blog": {
            "id": "2399953"
          },
          "published": "2011-08-01T19:58:00.000Z",
          "updated": "2011-08-01T19:58:51.947Z",
          "url": "http://buzz.blogger.com/2011/08/latest-updates-august-1st.html",
          "selfLink": "https://www.googleapis.com/blogger/v3/blogs/2399953/posts/7706273476706534553",
          "title": "Latest updates, August 1st",
          "content": "elided for readability",
          "author": {
            "id": "401465483996",
            "displayName": "Brett Wiltshire",
            "url": "http://www.blogger.com/profile/01430672582309320414",
            "image": {
              "url": "http://4.bp.blogspot.com/_YA50adQ-7vQ/S1gfR_6ufpI/AAAAAAAAAAk/1ErJGgRWZDg/S45/brett.png"
             }
          },
          "replies": {
            "totalItems": "0",
            "selfLink": "https://www.googleapis.com/blogger/v3/blogs/2399953/posts/7706273476706534553/comments"
          }
        },
        {
          "kind": "blogger#post",
          "id": "6069922188027612413",
          elided for readability
        }
      ]
    }
于 2013-09-09T08:58:41.247 回答