簡體   English   中英

如何使用 json_encode 將 PHP 格式化為 javascript 用於圖表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM