2012-03-05 91 views
1

我需要根據月份位置而不是按字母順序排列月份(按字母順序排列的月份)。我的腳本返回一個事件列表,並根據年份=>幾個月構建一個多關聯數組。 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; 
     } 
    } 
+0

使用此查詢:SELECT'date' FROM'events' WHERE'status' = 1 ORDER BY MONTH('data'),'name'? – meze 2012-03-05 08:25:03

+0

理想情況下,應通過在查詢中添加ORDER BY子句完成此操作。 – 2012-03-05 08:28:17

+0

優秀的Meze!您的查詢更新保存了一天。作出回答,他確認它是正確的答案 – mauzilla 2012-03-07 14:01:12

回答

1

嘗試此查詢

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

,看一下這個帖子:

PHP and Enums

通過specifing枚舉像幾個月的行爲這將是項目EATCHIP按照你想要的方式對它們進行排序。

我跳過這對你有幫助。