如何让 Javascript 和 PHP 以相同的方式对 JSON 响应进行排序


How do I get Javascript and PHP to order a JSON response the same way?

我有这个Javascript,它从Google API服务器接收一个JSON,然后输出内容(注意我的代码已经简化为清楚):

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.我该如何做到这一点?

使用 array_reverse 函数。

$recentBlog = json_decode(...);
$recentBlogReversed = array_reverse($recentBlog['items']);