0

Google APIサーバーからJSONを受け取り、コンテンツを出力するこのJavascriptがあります(わかりやすくするためにコードが単純化されていることに注意してください):

function init() {
  gapi.client.setApiKey('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
  gapi.client.load('blogger', 'v2', function() {
    var request = gapi.client.blogger.posts.list({
      'blogId': 'xxxxxxxxxxxxxxxxxxxxxxx',
      'fields': 'items(content,title)'
    });
    request.execute(function(response) {
      for (var i = 0; i < response.items.length; i++)
      {
        $(aDiv).append(response.items[i].title);
      }
    });
  });
}

そして、本質的に同じことを行うこのPHPコードがあります:

$recentBlog = json_decode(file_get_contents("https://www.googleapis.com/blogger/v3/blogs/xxxxxxxxxxxxxxxxxxxxxx/posts?key=xxxxxxxxxxxxxxxxx"), true);
foreach ($recentBlog['items'] as $item)
{
    echo $item[`title`];
}

問題は、各コードからの出力の順序が異なることです。Javascript は、上から下の順序でページに出力します2, 1, 0。PHP は、上から下に、0, 1, 2. 私が必要とするのは、「最新」のアイテムが一番上にあることです。そのため、上から下の順に両方が必要2, 1, 0です。

まったく同じ応答が返されると思われる JSON データのさまざまな呼び出し方法を除けば、唯一の本当の違いは、一方がfor()ループで、もう一方がforeach()ループであることです。それがどのように違いを生むかわかりませんので、何か他に欠けているものがあるに違いありません。

原因が何であれ、私の現在の状況では、最新のものがページの上部に表示されるように、PHP が Javascript の順序に準拠する必要があります。または、言い換えれば、上から下へ、2, 1, 0. どうすればそれを実現できますか?

4

1 に答える 1

1

array_reverse関数を使用します。

$recentBlog = json_decode(...);
$recentBlogReversed = array_reverse($recentBlog['items']);
于 2013-09-10T03:43:19.677 に答える