2016-06-24 3 views
0

С таким массивом, как бы вы отсортировали массив содержимого во времени внутри значения JSON?Как сортировать по значению внутри массива JSON

Array 
(
    [id] => 18 
    [content] => Array 
     (
      [0] => Array 
       (
        [id] => 39795 
        [json] => {"last_modified": "2016-05-07 13:40:28", "time": "53"} 
       ) 
      [1] => Array 
       (
        [id] => 39795 
        [json] => {"last_modified": "2016-05-07 14:18:06", "time": "90"} 
       ) 
     ) 
) 
+1

сортировки массива и при этом его декодировать JSON, чтобы получить доступ к значению времени ([Как сортировать] (http://stackoverflow.com/q/17364127); [Получите эти данные из этой вещи] (http://stackoverflow.com/q/29308898)). Конечно, сравните временные метки ваших значений времени для сортировки. – Rizier123

+0

Если это то, на что похожи фактические данные (строки даты ISO 8601), вам даже не нужно расшифровывать json. Сортировка по алфавиту будет сортировать даты по возрастанию/убыванию, так как формат даты ISO в основном YmdHis ... –

+0

@EliasVanOotegem Это приведет к некоторым неприятным ошибкам, только когда они изменят формат времени или изменят порядок значений перед кодированием это json :) – Rizier123

ответ

0

Спасибо, это работает

usort($response['content'], function ($a, $b) { 
    $aJson = json_decode($a['json'], true); 
    $bJson = json_decode($b['json'], true); 

    return $aJson['time'] > $bJson['time'] ? -1 : 1; 
}); 
Смежные вопросы