ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php – 修改JSON数据格式以与FLOT图表一起使用

2019-07-23 01:30:35  阅读:245  来源: 互联网

标签:php json flot


我正在尝试创建一个JSON对象来保存数据以用于FLOT图表.文档说数据格式应该是这样的点数组:

[ [1, 3], [2, 14.01], [3.5, 3.14] ]

我遇到的问题是我的AJAX调用返回一个带有数据格式的JSON对象,如下所示:

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结果循环期间将它们放入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}]
}

标签:php,json,flot
来源: https://codeday.me/bug/20190723/1508507.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有