如何使用json_encode格式PHP javascript图表?



我想转换一个PHP数组与json_encode使用值在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'有一个问题,它必须是:

"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)

最新更新