[英]How to use json_encode to format PHP to javascript for Chart?
我想使用 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', '2021-02-02', '2021-02-03'],
datasets: [{
"type": "line",
"data": "[10,14,8]"
"backgroundColor": "transparent",
"borderColor": "#007bff",
"pointBorderColor": "#007bff",
"pointBackgroundColor": "#007bff",
"fill": false
}]
},
“数据”有问题,它必须是:
"data": [10,14,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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.