Сортировка массива json в PHP по дате?

Я пытаюсь сортировать список новостей, которые были преобразованы из xml (rss) в json. Я бы хотел, чтобы они отсортировались по дате после того, как фиды были объединены, но я не уверен, что это можно сделать наилучшим образом.

Ответ json выглядит так:

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

Чтобы сделать это в 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); }); 

Если вам нужно отсортировать весь массив или другую его часть, вы сможете адаптировать эту функцию для этого.