2016-02-17 74 views
0

我想用Google Column Chart將我的數據可視化。但是我無法從MySql獲得適當的數據結構。將MySql查詢結果轉換爲正確的JSON數據

我目前的查詢結果:

array(6){ 
    [0]=> array(3){["id"]=>"1" ["count"]=>"6" ["day"]=>"15-01-01"} 
    [1]=> array(3){["id"]=>"2" ["count"]=>"3" ["day"]=>"15-01-01" } 
    [2]=> array(3){["id"]=>"3" ["count"]=>"1" ["day"]=>"15-01-01" } 
    [3]=> array(3){["id"]=>"1" ["count"]=>"6" ["day"]=>"15-01-02" } 
    [4]=> array(3){["id"]=>"2" ["count"]=>"4" ["day"]=>"15-01-02" } 
    [5]=> array(3){["id"]=>"3" ["count"]=>"6" ["day"]=>"15-01-02" } 
} 

雖然谷歌圖表需要以下格式:

var data = google.visualization.arrayToDataTable([ 
    ['Date', '15-01-01', '15-01-02', { role: 'annotation' } ], 
    ['1', 6, 6,], 
    ['2', 3, 4,], 
    ['3', 1, 6,], 
    ]); 

如何將我的數據轉換成合適的格式?

UPDATE

我嘗試這樣做:

$dateArray= array(); 
$output= "var data = google.visualization.arrayToDataTable(["; 
$output .= "['Date',"; 
foreach($mySqlResult as $val) { 
    if (in_array($val['day'], $dateArray)) { 
      continue; 
     } 
     $dateArray[] = $val['day']; 
     $output .= "'".$val['day']."',"; 
    } 
    $output .= " { role: 'annotation' } ],"; 

    foreach($mySqlResult as $val) { 
     $output .= "['".$val['id']."',".$val['count']."],"; 
    } 
    $output .= "]);"; 

這給了我下面的結果:

"var data = google.visualization.arrayToDataTable(
     [['Date','15-01-01','15-01-02', { role: 'annotation' } ], 
     ['1',6,],['2',3,],['3',1,],['1',6,],['2',4,],['3',6,],]);" 

需要還沒什麼。如何創建每個ID與所有計數行:

['1', 6, 6,],['2', 3, 4,],['3', 1, 6,], 
+1

你已經嘗試什麼到目前爲止 –

+1

你能證明你的代碼,什麼是 –

+0

@SharmaVikram我添加鏈接到谷歌柱形圖 – julie

回答

0

試試這個,它可能會幫助你。我已經格式化數組在PHP中獲得所需的演示腳本輸出。你只需要正確使用循環。

<?php 
$data = array(
    0=> array("id"=>"1","count"=>"6","day"=>"15-01-01"), 
    1=> array("id"=>"2","count"=>"3","day"=>"15-01-01"), 
    2=> array("id"=>"3","count"=>"1","day"=>"15-01-01"), 
    3=> array("id"=>"1","count"=>"6","day"=>"15-01-02"), 
    4=> array("id"=>"2","count"=>"4","day"=>"15-01-02"), 
    5=> array("id"=>"3","count"=>"6","day"=>"15-01-02"), 
); 

$output= "var data = google.visualization.arrayToDataTable(["; 
$output .= "['Date',"; 
foreach($data as $val) { 
    $output .= "'".$val['day']."',"; 
} 
$output .= " { role: 'annotation' } ],"; 

foreach($data as $val) { 
    $output .= "['".$val['id']."',".$val['count'].",6,''],"; 
} 
$output .= "]);"; 

echo $output; 
?> 
+0

下來的選民,請提及理由。 – PHPExpert

+1

我沒有downvoted你的答案,但它似乎是這裏最令人毛骨悚然的一個,你需要關心這些'大括號',而你可以簡單地在PHP中創建一個數組,只需使用'json_encode'。 –

+0

@Uchiha我試了他的答案。我認爲這有助於我接近理想的產出。但仍然不完全是我需要的。我對PHP不太熟練。你能告訴我如何在所需的結構中創建和編碼數組? – julie