2013-09-27 58 views
1

我正在嘗試創建一個與FLOT圖表配合使用的數據數組。我使用這個笨代碼來生成數組:從JSON中刪除引號並用方括號替換大括號

function ajaxmuniChart1c(){ 
$muni = $this->input->POST('muni'); 
$q = $this->db->query("SELECT SaleYear AS Y, NewSaleType AS T, count(*) AS C, format((sum(SalePrice)/sum(Quantity1)),0) AS R FROM tblsales WHERE tblsales.SaleYear > 2007 AND tblsales.Quantity1 > 2000 AND (tblsales.NewSaleType = 'Industrial') AND tblsales.Municipality = '".$muni."' GROUP BY T,Y ORDER BY T,Y"); 
$json_Array = array(); 
foreach ($q->result_array() as $row){ 
    $JsonArray[] = array(floatval($row['Y']) => floatval($row['R'])); 
} 
$labeledArray = array( 
    "label" => "Average Sale Price per SF", 
    "data" => $JsonArray 
); 
echo json_encode($labeledArray); 
exit; 
} 

這段代碼的問題是,所產生的JSON對象不能繪製因爲「價值」其實都是字符串。這是有問題的JSON輸出:

{"label":"Average Price","data":[{"2008":96},{"2009":74},{"2010":73},{"2011":96},{"2012":124},{"2013":104}]} 

有三個問題與此JSON:

  1. 需要方括號,而不是大括號;和
  2. 需要使用逗號分隔鍵 - >值對而不是全冒號;和
  3. 行情需要被去除,使得字符串「2008」變成值2008

這裏是JSON輸出需求的方式進行格式化:

["label":"Average Price","data":[[2008,96],[2009,74],[2010,73],[2011,96],[2012,124],[2013,104]]] 

什麼是最好的清理這個JSON對象的方法?我應該使用CodeIgniter代碼在服務器端執行它嗎?或者,我應該在JavaScript的客戶端上完成JSON對象之後呢?謝謝。

回答

2

由於您生成該JSON,您可以更改其來源。

$JsonArray[] = array(floatval($row['Y']) => floatval($row['R'])); 

- >

$JsonArray[] = array(floatval($row['Y']), floatval($row['R'])); 

(這改變像{"2008": 80}陣列[2008, 80]

+0

真棒。感謝Brian。你讓我的週末! – DanielAttard