Подтвердить что ты не робот

Сортировка массива объектов по дате

Как я могу переупорядочить массив таких объектов:

 [495] => stdClass Object
        (
         [date] => 2009-10-31 18:24:09
         ...
        )
 [582] => stdClass Object
        (
         [date] => 2010-2-11 12:01:42
         ...
        )
 ...

ключом date, самым старым первым?

4b9b3361

Ответ 1

usort($array, function($a, $b) {
    return strtotime($a['date']) - strtotime($b['date']);
});

Или если у вас нет PHP 5.3:

function cb($a, $b) {
    return strtotime($a['date']) - strtotime($b['date']);
}
usort($array, 'cb');

Ответ 2

Поскольку исходный вопрос касается сортировки массивов объектов stdClass(), здесь код, который будет работать, если $a и $b являются объектами:

usort($array, function($a, $b) {
    return strtotime($a->date) - strtotime($b->date);
});

Или если у вас нет PHP 5.3:

function cb($a, $b) {
    return strtotime($a->date) - strtotime($b->date);
}
usort($array, 'cb');

Ответ 3

Я хотел расширить ответ arnaud576875. Я столкнулся с этой проблемой, но с помощью DateTime объектов. Вот как я смог выполнить одно и то же.

usort($array, function($a, $b) {
    return $a['date']->format('U') - $b['date']->format('U');
});