我需要根据月份位置而不是按字母顺序排列月份(按字母顺序排列的月份)。我的脚本返回一个事件列表,并根据年份=>几个月构建一个多关联数组。 2012 => array(“August”,“March”,“September”),2013 => array(“April”,“May”);它完美地构建了数组,但我现在需要对月份进行排序,以便返回2012 => array(“March”,“August”,“September”),2013 =>(“April”,“May);按位置排列月份阵列
。这是我目前使用脚本注意,在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 MONTH('data'),'name'? – meze 2012-03-05 08:25:03
理想情况下,应通过在查询中添加ORDER BY子句完成此操作。 – 2012-03-05 08:28:17
优秀的Meze!您的查询更新保存了一天。作出回答,他确认它是正确的答案 – mauzilla 2012-03-07 14:01:12