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名前の要素の 2 つの要素を持つ単なる配列です。その場合、並べ替え関数は次のようになります。titlepubdate

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

配列全体または配列の別の部分をソートする必要がある場合は、その関数を適応させる必要があります。

于 2013-10-21T00:06:21.420 に答える