3

我正在尝试对已从 xml (rss) 转换为 json 的新闻项目列表进行排序。我希望在合并提要后按日期顺序对它们进行排序,但我不确定实现它的最佳方法。

json 响应如下所示:

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

1 回答 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是一项相当简单的任务,因为每个元素只是一个具有自己的两个元素的数组,一个是 named title,另一个是 named pubdate。在这种情况下,您的排序功能看起来像:

 usort($data['data']['item'], function($a, $b) {
   return (strtotime($a['pubdate']) < strtotime($b['pubdate']) -1 : 1);
 });

如果您需要对整个数组或其中的不同部分进行排序,您应该能够调整该函数来执行此操作。

于 2013-10-21T00:06:21.420 回答