Javascript PHP数组在Chartjs中被视为单个元素
我在PHP中有两个数组,我正试图将它们传递给一个图表,以便在Chartjs中显示 下面的代码通过在多维数组上使用foreach来提取数组来创建数组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
$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
中获取数据代码>及其下一行。两者现在都用双引号括起来。让我知道它是否有效,可能是因为双引号导致您出错。让我再给你一个微妙的解决办法。给我点时间