2013-05-18 37 views
2

我正在設計一個codeigniter應用程序,並動態生成我的數組並將它們推送到我的視圖。儘管看起來很困難,但我還是遇到了一些問題。製作一個php數組floctcharts兼容,形式Codeigniter

在我的模型功能我產生我的數組是這樣的:

foreach ($Q->result_array() as $row) 
      { 

       $data[]=array(
           'label'=>$row['students'], 
           'data'=>$row['marks'] 
          );   
      } 

然後我返回$數據

在我看來,我用json_decode喜歡這裏顯示

<script> 
    data = <?php echo json_encode($lang);?>; 
    data=trim("label", '"'); 
    //alert(data); 
    $.plot($("#graph4"), data, 
    { 
     series: { 
      pie: { 
       show: true, 
       radius: 1, 
       label: { 
        show: true, 
        radius: 3/4, 
        formatter: function(label, series){ 
         return '<div style="font-size:8pt;text-align:center;padding:2px;color:white;">'+label+'<br/>'+Math.round(series.percent)+'%</div>'; 
        }, 
        background: { 
         opacity: 0.5, 
         color: '#000' 
        } 
       } 
      }, 
     legend: { 
      show: false 
     } 
}); 

</script> 

但JSON生成與flotcharts庫不兼容,而不是有

[{label:"Mark",data:1},{label:"Jenny",data:1}] 

[{"label":"Mark","data":"1"},{"label":"Jenny","data":"1"}] 

如何刪除雙引號,以便它只能應用於標籤,而不是數據

任何幫助,將不勝感激,

感謝

UPDATE

對於那些將要面對這個問題的人,我用正則表達式解決了這個問題

echo preg_replace('/"([^"]+)"\s*:\s*/', '$1:',json_encode($lang)); 
+0

我想你2對象是在同一javascript(帶/不帶雙引號) – Stiger

回答

0

您可以手動構建它,而不是使用json函數。我用這樣的事情在過去,你可以在你的模型在foreach內部使用:

$data .= '{label:'.$row["students"].',data:'.$row["marks"].'},'; 

,並在循環後:

$data = "[{$data}]"; 
+0

謝謝,但仍然輸出錯誤,實際上flotcharts的格式並不是真正的json,這就是爲什麼動態地執行它有點棘手 – Rad