微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 json_encode 将 PHP 格式化为图表的 javascript?

如何解决如何使用 json_encode 将 PHP 格式化为图表的 javascript?

我想用 json_encode 转换 PHP 数组以使用 javascript Chart.js 中的值

我拥有的是:

$dataSets = [ 0 => [
    'type' => 'line','data' => json_encode(array_values($val_ca_1),JSON_NUMERIC_CHECK),'backgroundColor' => 'transparent','borderColor' => '#007bff','pointBorderColor' => '#007bff','pointBackgroundColor' => '#007bff','fill' => false
  ],

];

$val_ca_1 = array('2021-02-01' => 10,'2021-02-02' => 14,'2021-02-03' => 8);

我在 JavaScript 中做什么:

new Chart($visitorsChart,{
data: {
  labels: ['2021-02-01','2021-02-02','2021-02-03'],datasets: <?PHP echo json_encode($dataSets); ?>
},options: {
  maintainAspectRatio: false,tooltips: {
    mode: mode,intersect: intersect
  },

但它显示

data: {
  labels: ['2021-02-01',datasets: [{
     "type": "line","data": "[10,14,8]"
     "backgroundColor": "transparent","borderColor": "#007bff","pointBorderColor": "#007bff","pointBackgroundColor": "#007bff","fill": false
  }]
},

而且“数据”有问题,必须是:

"data": [10,8]

(没有双引号)知道吗? 谢谢!

解决方法

您对某些数据进行了双重编码。看看这个:

json_encode(array_values($val_ca_1),JSON_NUMERIC_CHECK)

这会将那部分数据预编码为 $dataSets 中的字符串。所以它已经是JSON了。当您将整个 $dataSets 转换为 JSON 时,它会将其视为已转换为的简单字符串,而不是数组。

解决方案很简单 - 不要单独对数据的不同部分进行编码。将其全部保存在 PHP 变量中,然后在最后一刻真正需要时将其全部转换为 JSON 字符串。

实际上,在您的代码中,只需更改

'data' => json_encode(array_values($val_ca_1),JSON_NUMERIC_CHECK)

'data' => array_values($val_ca_1)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。