Php 修改用于FLOT图表的JSON数据格式

Php 修改用于FLOT图表的JSON数据格式,php,json,flot,Php,Json,Flot,我试图创建一个JSON对象来保存用于图表的数据。文档中说,数据格式应该是如下所示的点数组: [ [1, 3], [2, 14.01], [3.5, 3.14] ] Rate: [96, 74, 73, 96, 124, 104] Year: [2008, 2009, 2010, 2011, 2012, 2013] 我遇到的问题是,我的AJAX调用返回的JSON对象的数据格式如下: [ [1, 3], [2, 14.01], [3.5, 3.14] ] Rate: [96, 74, 73,

我试图创建一个JSON对象来保存用于图表的数据。文档中说,数据格式应该是如下所示的点数组:

[ [1, 3], [2, 14.01], [3.5, 3.14] ]
Rate: [96, 74, 73, 96, 124, 104]
Year: [2008, 2009, 2010, 2011, 2012, 2013]
我遇到的问题是,我的AJAX调用返回的JSON对象的数据格式如下:

[ [1, 3], [2, 14.01], [3.5, 3.14] ]
Rate: [96, 74, 73, 96, 124, 104]
Year: [2008, 2009, 2010, 2011, 2012, 2013]
有人能解释一下我应该如何修改这段代码,以便创建FLOT图表所需的正确数据格式吗?谢谢

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_SaleYear = array();
$json_AvrgRate = array();
foreach ($q->result_array() as $row){
    $json_SaleYear[] = $row['Y'];
    $json_AvrgRate[] = $row['R'];
}
$json['Year'] = $json_SaleYear;
$json['Rate'] = $json_AvrgRate;            
echo json_encode($json);
exit;
}

foreach
results循环期间,将它们放置在PHP数组中的同一行中:

/** 
 *   Bind the two on the
 *   same row whilst looping
 *   the results
**/
foreach ( $q->result_array() as $row ){
    $JsonArray[] = array( $row['Y'] => $row['R'] );
}

/**
 *   Expected Array Result:
**/
print_r( $JsonArray );

Array
(
[0] => Array
    (
        [2008] => 96
    )

[1] => Array
    (
        [2009] => 74
    )

/**
 *   echo this out as an JSON String
**/
echo json_encode( $JsonArray );
这将为您提供:

  [{"2008":96},{"2009":74},{"2010":73},{"2011":96},{"2012":124},{"2013":104}]
如文档中所述,您可以为数据提供标签。 要做到这一点,您需要将其推入一个多维数组中,该数组将分支出:

  • 标签
  • 资料
在将其编码为JSON数组之前,我们可以将两者连接在一起:

/**
 *  Create a new variable 
 *  two join the two
**/
$WithLabels = array( 
    "label" => "Sales by Years",
    "data" => $JsonArray
);

echo json_encode( $WithLabels );
对其进行编码,最终为我们提供以下信息:

{
  "label" : "Sales by Years",
  "data"  : [{"2009":74},
             {"2010":73},
             {"2011":96},
             {"2012":124},
             {"2013":104}]
}

在foreach结果循环期间将它们放入PHP数组中

// PHP CODE     
$data = array();  // empty array
    foreach ($query as $k=>$row) {
        $data[] = array($k, $row->total_price); // store data in array 
    }
    echo json_encode($data);  // json encode 
Ajax对成功的回应

success: function(msg) {
                var d1 = msg;
                console.log(d1);
                $.plot($("#chart_lines_fill_nopoints"), [d1]); //chart_lines_fill_nopoints id name 
            }
// Data Should be in this format 
//array(array(1,300),array(1,1300),array(1,200),array(1,500)); etc

// should be in json result 

[[1, 7.8], [2, 7.8], [3, 20.0], [4, 7.8], [5, 7.8]]

就这样

@Danielatard更新了我的答案,让我的答案更详细一点=)谢谢你的帮助。非常感谢。很有魅力。还有一个问题要问你。我如何修改您的代码,以便最终得到数据的标签?@Danielatard修改了我的答案,并对How=]进行了一些描述