php Поиск объекта с наиболее поздней датой изменения с помощью array_reduce()
Primary tabs
Самый простой способ отсортировать массив сущностей по полю дата - использовать функцию usort()
Данная заметка предлагает не просто отсортировать массив объектов, но и сразу вернуть наиболее "свежую" дату, - в одно действие.
Функция php array_reduce() даёт возможность "собрать" массив к одному значению. И мы будем одновременно его сортировать и заменять результат в случае, если тот позже существующего.
$resultDate = array_reduce( $opinions, function (?DateTime $latestChangeDate, Opinion $opinion): DateTime { $opinionChangeDate = $opinion->getChangeDate(); return $latestChangeDate < $opinionChangeDate ? $opinionChangeDate : $latestChangeDate; } );
Итак,
- $latestChangeDate - аргумент функции обратного вызова, в который после каждой итерации цикла кладётся возвращаемый результат. Обратите внимание, что изначально переменная $latestChangeDate не определена, т.е. равна null. Поэтому, тип аргумента указан как ?DateTime, что означает DateTime или null.
- $opinions - массив объектов, из которых мы хотим выбрать последний изменённый, и чью дату изменения хотим получить.
Источник
- Log in to post comments
- 1750 reads