Javascript PHP数组在Chartjs中被视为单个元素

Javascript PHP数组在Chartjs中被视为单个元素,javascript,php,charts,Javascript,Php,Charts,我在PHP中有两个数组,我正试图将它们传递给一个图表,以便在Chartjs中显示 下面的代码通过在多维数组上使用foreach来提取数组来创建数组 <?php $behaviours = orderByType($_SESSION['loggedStudent']['studentID']); $behTypes = array(); $behValues = array(); foreach($behaviours as $item){ $

我在PHP中有两个数组,我正试图将它们传递给一个图表,以便在Chartjs中显示

下面的代码通过在多维数组上使用foreach来提取数组来创建数组

<?php
    $behaviours = orderByType($_SESSION['loggedStudent']['studentID']);
    $behTypes = array();
    $behValues = array();
    foreach($behaviours as $item){
        $behTypes[] = $item["type"];
        $behValues[] = intval($item["count(*)"]);
    }
    // php arrays to JSON
    $behaviourLabels = json_encode($behTypes, TRUE); 
    $behaviourValues = json_encode($behValues, TRUE);
?>

<canvas id="pie-chart" width="800" height="450"></canvas>

<script>
// parse to js
var strLables = <?php echo($behaviourLabels); ?>;
var strValues = <?php echo($behaviourValues); ?>;

// parse as array
var arrLables = JSON.parse($strLables);
var arrValues = JSON.parse($strValues);

new Chart(document.getElementById("pie-chart"), {
    type: 'pie',
    data: {
      labels: arrLabels,
      datasets: [{
        label: "Incident Type",
        backgroundColor: ["#3e95cd", "#8e5ea2","#3cba9f","#e8c3b9","#c45850"],
        data: arrValues,
      }]
    },
    options: {
      title: {
        display: true,
        text: 'Breakdown of incident types for <?php echo($_SESSION['loggedStudent']['firstName']);  ?>'
      }
    }
});

</script>

//解析到js
var strLables=;
var-strValues=;
//解析为数组
var arralables=JSON.parse($strLables);
var arrValues=JSON.parse($strValues);
新图表(document.getElementById(“饼图”){
键入“pie”,
数据:{
标签:ARR标签,
数据集:[{
标签:“事件类型”,
背景色:[“3e95cd”、“8e5ea2”、“3cba9f”、“e8c3b9”、“c45850”],
数据:ARR值,
}]
},
选项:{
标题:{
显示:对,
文本:“事件类型的细分”
}
}
});

没有显示图表或标签。我做错了什么?

数据和标签的预期值都是数组

您需要做的是将
json
传递给JavaScript

// php arrays to JSON
$behaviourLabels = json_encode($behTypes);
$behaviourValues = json_encode($behValues);
现在使用javascript

var arrLables = <?php echo($behaviourLabels); ?>;
var arrValues = <?php echo($behaviourValues); ?>;

// Now use them directly in you configuration
data: {
      labels: arrLables,
      datasets: [{
        label: "Incident Type",
        backgroundColor: ["#3e95cd", "#8e5ea2","#3cba9f","#e8c3b9","#c45850"],
        data: arrValues,
      }]
    },
vararlables=;
var值=;
//现在直接在配置中使用它们
数据:{
标签:可折叠,
数据集:[{
标签:“事件类型”,
背景色:[“3e95cd”、“8e5ea2”、“3cba9f”、“e8c3b9”、“c45850”],
数据:ARR值,
}]
},

第一部分是php代码而不是javascript,第二部分是将值从php变量传递到javascript变量。哦,我真的很抱歉这是错误的,我错了。更新了我的答案。并使用
console.log(strLables,strValues)
尝试将它们括在双引号中,以验证是否正在
strLables
strValues
中获取数据及其下一行。两者现在都用双引号括起来。让我知道它是否有效,可能是因为双引号导致您出错。让我再给你一个微妙的解决办法。给我点时间