使用PHP按日期排序JSON数组?

3

我将尝试对从XML(RSS)转换为JSON格式的新闻列表进行排序。在合并源之后,我希望按日期顺序对其进行排序,但我不确定实现的最佳方法。

JSON响应如下:

{ "success":true,
"message":"",
"data":{
"title":"Feed Name",
"item":[{
"title":"test",
"pubdate":"Sun, 20 Oct 2013 21:36:42 GMT"}]
}
}

特别是当我们只是搜索时,Stack可以满足90%-95%的代码需求。 - brasofilo
谢谢至今为止的输入。我知道我需要使用usort,但是我不确定如何在数组中嵌套这么深的项目的情况下实现它。 - JamieB
1个回答

7
要在PHP中完成这个任务,首先需要将其解码为PHP数组:
 $data = json_decode($yourJsonVariable, true);

现在根据您提供的数据,这将给您一个类似于以下数组的数组:
 array(
   'success' => true,
   'data' => array(
     'title' => 'Feed Name',
     'item' => array(
       0 => array(
         'title' => 'test',
         'pubdate' => 'Sun, 20 Oct 2013 21:36:42 GMT'
       )
     )
   )
 )

所以,你可以使用这个方法来确定你想要的排序功能如何工作。不清楚的是,你是想对item数组中的元素进行排序,还是想做一些更复杂的排序(因为你提到了“当源合并时”)。
仅对item数组进行排序是一个相当简单的任务,因为每个元素只是一个包含两个元素的数组,一个命名为title,另一个命名为pubdate。在这种情况下,你的排序函数应该如下所示:
 usort($data['data']['item'], function($a, $b) {
   return (strtotime($a['pubdate']) < strtotime($b['pubdate']) -1 : 1);
 });

如果您需要对整个数组或其中的某一部分进行排序,您应该能够调整该函数以实现此目的。

非常感谢,我需要对多个数据源进行排序,但这是一个很好的起点。谢谢! - JamieB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接