0

最近、Stack Oveflow コミュニティの助けを借りて、Google API から取得した JSON データを操作する方法を学びました。それで、Blogger の JSON データでほぼ同じ種類のアクションを行う方法を、再び Google API を使用して把握したと思いました。

しかし、それは私を夢中にさせてきました。必要な配列の適切なレベルに到達する方法を理解できないようです。

私がやろうとしているのは、選択したブログ投稿を取得してから、情報を厳選して表示することです。まっすぐ進むべきです。

現在、私のブログには3 つのテスト エントリしかありません。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;
}

...しかし、2番目と3番目のアイテムしか取得しません。私はもう最初のアイテムを手に入れません

コードの何が問題になっていますか?

役に立ったら、これは私が返す JSON の形式に関するGoogle のドキュメントです。

4

2 に答える 2

2

おそらく、JSON デコード呼び出しで間違った括弧を使用している可能性があります。

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

関数のすぐ後ろに 1 つの括弧を移動したことに注意してください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 に答える