Сортировать месяцы по позициям - PullRequest
1 голос
/ 05 марта 2012

Мне нужно отсортировать массив месяцев (алфавитные месяцы) в соответствии с их положением по месяцам, а не по алфавиту. Мой скрипт возвращает список событий и строит многоассоциативные массивы на основе лет => месяцев, например. 2012 => массив («август», «март», «сентябрь»), 2013 => массив («апрель», «май»); Он отлично строит массив, но теперь мне нужно отсортировать месяцы так, чтобы он возвращал массив 2012 => («Март», «Август», «Сентябрь»), 2013 => («Апрель», «Май);

Вот скрипт, который я сейчас использую. Обратите внимание, что в поле даты в MySQL задано значение ДАТА, а не VARCHAR, а даты вводятся ГГГГ-ММ-ДД

public function returnMonthsArray() {
        $sql = "SELECT `date` FROM `events` WHERE `status`=1 ORDER BY `name`";
        $results = $this->db->returnMultiAssoc($sql);
        $navArray = array();
        foreach($results as $key => $value) {
            $timestamp = strtotime($value["date"]);
            $year = date("Y",$timestamp);
            $month = date("F",$timestamp);
            if(!array_key_exists($year, $navArray)) {
                $navArray[$year] = array();
            }
            if(!in_array($month,$navArray[$year])) {
                $navArray[$year][] = $month;
            }
        }
        if(count($navArray)) {
            return $navArray;
        } else {
            return false;
        }
    }

Ответы [ 2 ]

1 голос
/ 05 марта 2012

попробуйте этот запрос

SELECT `date` FROM `events`
WHERE `status`=1 ORDER BY `name`"
GROUP BY MONTH(`date`)
1 голос
/ 05 марта 2012

Посмотрите на этот пост:

PHP и Enums

Задавая поведение, подобное перечислению для месяцев, было бы легче отсортировать их так, как вы хотите.

Я надеюсь, что это полезно для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...