Php 按位置对数组排序

Php 按位置对数组排序,php,mysql,arrays,date,Php,Mysql,Arrays,Date,我需要根据月份的位置而不是字母顺序对月份数组(按字母顺序排列的月份)进行排序。我的脚本返回事件列表,并基于年份=>月份构建多关联数组,例如2012=>数组(“八月”、“三月”、“九月”)、2013=>数组(“四月”、“五月”);它完美地构建了数组,但我现在需要对月份进行排序,以便返回2012=>array(“三月”、“八月”、“九月”)、2013=>(“四月”、“五月”) 这是我当前使用的脚本。请注意,mysql中的日期字段设置为date而不是VARCHAR,日期输入为YYYY-MM-DD pu

我需要根据月份的位置而不是字母顺序对月份数组(按字母顺序排列的月份)进行排序。我的脚本返回事件列表,并基于年份=>月份构建多关联数组,例如2012=>数组(“八月”、“三月”、“九月”)、2013=>数组(“四月”、“五月”);它完美地构建了数组,但我现在需要对月份进行排序,以便返回2012=>array(“三月”、“八月”、“九月”)、2013=>(“四月”、“五月”)

这是我当前使用的脚本。请注意,mysql中的日期字段设置为date而不是VARCHAR,日期输入为YYYY-MM-DD

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;
        }
    }

请查看此帖子:

通过为月份指定类似枚举的行为,可以更容易地按照您想要的方式对它们进行排序

我希望这对你有帮助。

试试这个查询

SELECT `date` FROM `events`
WHERE `status`=1 ORDER BY `name`"
GROUP BY MONTH(`date`)

使用此查询:从
事件中选择
日期
,其中
状态
=1个月订单(
数据
),
名称
?理想情况下,这应该通过在查询中添加ORDER BY子句来完成。好极了!您的查询更新保存了当天。回答后,他确认为正确答案