php - 如何将关联的php数组json_encode为[{x:key1,y:value1},{x:key2,y:value2},...]?
问题描述
我想在一个图表中显示两个带有 chart.js 的折线图。因为一些 x 值不相同(一些在一个数据集中丢失,一些在另一个)我需要这两个数据集的数据,格式如下:
[{x: "key1", y: value1},
{x: "key2", y: value2},
{x: "key3", y: value3},
...
{x: "key_n", y: value_n}]
我的出发点是每个数据集的两个 php 数组(从 mysql 数据库中获取)。第一个数组的 json 编码输出为:
["2019-06-25","2019-06-26","2019-06-27","2019-06-28","2019-06-29","2019-06-30","2019-07-01"]
第二个数组的 json 编码输出为:
[3.304,3.24,3.137,3.232,3.279,3.298,3.307]
Chart.js 确实需要这种格式:
[{x: "2019-06-25", y: 3.304},
{x: "2019-06-26", y: 3.24},
{x: "2019-06-27", y: 3.137},
{x: "2019-06-28", y: 3.232},
{x: "2019-06-29", y: 3.279},
{x: "2019-06-30", y: 3.298},
{x: "2019-07-01, y: 3.307}]
我试过这样:
$combined = array_combine($leonie_created_at, $weight_leonie);
foreach( $combined as $key=>$val ) {
$result .= '{' . 'x: ' . $key . ', y: ' . $val . '}';
}
但是json编码的结果是
"{x: 2019-06-25, y: 3.304}{x: 2019-06-26, y: 3.24}{x: 2019-06-27, y: 3.137}{x: 2019-06-28, y: 3.232}{x: 2019-06-29, y: 3.279}{x: 2019-06-30, y: 3.298}{x: 2019-07-01, y: 3.307}{x: 2019-07-02, y: 3.18}"
有人有想法吗?
解决方案
您可以使用简单的foreach
循环json_encode
$r = [];
foreach($a1 as $k => $v){
$r[] = ['x' => $a1[$k], 'y' => $a2[$k]];
}
echo json_encode($r);
推荐阅读
- javascript - Window.print() 在弹出窗口中的 ipad chrome 中不起作用[window.open()]
- angular - 当我尝试对用户进行身份验证时出现 unsupported_grant_type 错误
- html - 表单包装器没有响应
- raspberry-pi3 - rplidar 输入缓冲区中的测量值过多
- c# - Application_BeginRequest - 首先调用基方法
- amazon-s3 - 在 Salesforce.com 中访问 S3 对象
- mysql - MySQL 到 MSSQL 复制
- django - Django REST framework RetrieveAPIView 获取空的“id”参数并返回 404 错误
- javascript - 无法安装 jest
- android - 来自字符串标识符的字符串键