2015-10-14 91 views
1

我一直在研究我的齒輪。有關同一主題,請參閱my previous question。看起來這是一個難以解決的問題。但是,我發現​​,而且似乎Derek Adair已經設法使同一個問題出現json。安排在php和mysql下的月份

我的問題是

如何從該查詢

SELECT 
    MONTHNAME(date) as month, YEAR(date) as year 
FROM 
    MOCK_DATA 
GROUP BY YEAR(date), MONTH(date) DESC 

得到的結果無論是JSON陣列,或obecjt(stdClass的)

{ 
    "2009":["August","July","September"], 
    "2010":["January", "February", "October"] 
} 

因爲現在我得到以下結果:

Array(35) { [0]=> object(stdClass)#19 (2) { 
["month"]=> string(8) "December" 
["year"]=> string(4) "2013" } 
[1]=> object(stdClass)#20 (2) { 
["month"]=> string(8) "November" 
["year"]=> string(4) "2013" } . . . . 

和預期的結果是一樣的東西:

2013 
jan 
feb 
...etc 
2014 
jan 
feb 
..etc 
2015 
jan 
feb 
..etc 
+0

從查詢中獲取數據後,使用一個for循環並做到這一點。 –

回答

0

請參閱下面的代碼

$result = mysql_query("SELECT MONTHNAME(DATE) AS 
MONTH , YEAR(DATE) AS YEAR 
FROM mdata 
GROUP BY YEAR(DATE) , MONTH(DATE) DESC "); 
$data = array(); 
while ($row = mysql_fetch_array($result, MYSQL_NUM)) { 
    $m = $row[0]; 
    $y = $row[1]; 
    if(!isset($data[$y])) { 
     $data[$y] = array(); 
    } 
    $data[$y][] = $m; 
} 
echo '<pre>'.print_r($data, true).'</pre>'; 

,其結果是

Array 
(
    [1997] => Array 
     (
      [0] => February 
     ) 

    [2004] => Array 
     (
      [0] => October 
     ) 

    [2015] => Array 
     (
      [0] => October 
      [1] => March 
     ) 

) 
0

這就是我想出了感謝接受的答案!

 $sql = "SELECT MONTHNAME(date) as month, YEAR(date) as year FROM MOCK_DATA GROUP BY YEAR(date), MONTH(date) DESC"; 
     $query = $database->prepare($sql); 
     $query->execute(); 

     $data = array(); 

while($row = $query->fetch(PDO::FETCH_ASSOC)) { 
    $m = $row['month']; 
    $y = $row['year']; 
    if(!isset($data[$y])) { 
     $data[$y] = array(); 
    } 
    $data[$y][] = $m; 
} 

     return $data; 

這也是我如何打印:

echo '<br>Years and months<br>'; 
foreach($this->arrange as $year => $yearMonths) { 
    echo '<b>Year: '.$year.'</b><br>'; 
    foreach($yearMonths as $month) { 
     echo 'Month: '.$month.'<br>'; 
    } 
    echo '<br>'; 
} 
echo '<br>Only years<br>'; 
foreach($this->arrange as $year => $yearMonths) { 
    echo '<b>Year: '.$year.'</b><br>'; 
}