首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用json_encode将PHP格式化为javascript for Chart?

如何使用json_encode将PHP格式化为javascript for Chart?
EN

Stack Overflow用户
提问于 2021-02-15 23:54:02
回答 1查看 42关注 0票数 0

我想用json_encode转换一个PHP数组来使用javascript Chart.js中的值。

我所拥有的是:

代码语言:javascript
复制
$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中做了什么:

代码语言: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
  },

但它会显示:

代码语言:javascript
复制
data: {
  labels: ['2021-02-01', '2021-02-02', '2021-02-03'],
  datasets: [{
     "type": "line",
     "data": "[10,14,8]"
     "backgroundColor": "transparent",
     "borderColor": "#007bff",
     "pointBorderColor": "#007bff",
     "pointBackgroundColor": "#007bff",
     "fill": false
  }]
},

“数据”有一个问题,那就是:

代码语言:javascript
复制
"data": [10,14,8]

(不带双引号)有什么想法吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-16 00:00:30

您正在对一些数据进行双重编码。看看这个:

代码语言:javascript
复制
json_encode(array_values($val_ca_1), JSON_NUMERIC_CHECK)

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

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

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

代码语言:javascript
复制
'data' => json_encode(array_values($val_ca_1), JSON_NUMERIC_CHECK)

代码语言:javascript
复制
'data' => array_values($val_ca_1)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66211191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档