PHP Сортировка массива по месяцам, а затем по годам

У меня есть массив или объекты с датами, по которым я хочу сортировать.

У меня есть следующая пользовательская функция, которую я передаю usort

    function sortMonths($a, $b) {
    if ( $a->received_date == $b->received_date ) return 0;
    return ($a->received_date > $b->received_date) ? 1 : -1;
}

Что делает по мере необходимости и сортирует даты, поэтому я получаю:

2009-05-01 2009-03-01 2008-05-01 2008-03-01 2007-03-01

Однако как сгруппировать по месяцам, а затем упорядочить по годам, чтобы получить:

2009-05-01 2008-05-01 2009-03-01 2008-03-01 2007-03-01

Спасибо


person rookang    schedule 28.10.2009    source источник


Ответы (2)


person    schedule
comment
Большое спасибо. Потрясающий :) - person rookang; 28.10.2009

person    schedule
comment
Кстати: intval(date('m',$a->received_date)); можно сократить до idate('m',$a->received_date); - person Stefan Gehrig; 28.10.2009
comment
Как следует из вопроса, OP имеет даты в формате YYYY-MM-DD, а не в виде временных меток UNIX. Поэтому вам нужно выполнить $a = strtotime($a->received_date) и $b = strtotime($b->received_date), чтобы иметь возможность использовать функцию date() или idate() на $a и $b. - person Stefan Gehrig; 28.10.2009