Вы можете использовать usort
и пользовательскую функцию сравнения:
$data = '{"info":[{"id":1, "title":"original title", "name":"john doe", "date":"2010-05-15"}, {"id":2, "title":"another title", "name":"foo bar", "date":"2009-04-11"}]}';
$info = json_decode($data, true)['info'];
usort($info, function ($a, $b) {
return $a['date'] <=> $b['date'];
});
<=>
работает здесь, потому что сравнение строк также является сопоставлением даты, когда ваши даты форматируются как YYYY-MM-DD.
Затем, чтобы показать значение года для записи, вы можете проанализировать дату в DateTime
и переформатировать ее:
$date = DateTime::createFromFormat('Y-m-d', $item['date']);
$year = $date->format('Y');