Javascript 为什么json_编码的数据不显示
我添加了chartJS,效果很好,当我试图将我的json_编码的php数组添加到chartJS的数据字段时,我遇到了这个问题。我的问题是图表无法将我的数据添加到条形图中。看到图片了吗 这就是我使用print_r输出数据时json_编码的数组的样子 [{"todoCoin":"1"},{"todoCoin":"1"},{"todoCoin":"1"},{"todoCoin":"1"},{"todoCoin":"1"},{"todoCoin":"6"},{"todoCoin":"5"},{"todoCoin":"3"},{"todoCoin":"1"},{"todoCoin":"2"},{"todoCoin":"4"},{"todoCoin":"4"},{"todoCoin":"5"},{"todoCoin":"9"},{"todoCoin":"10"},{"todoCoin":"11"},{"todoCoin":"6"},{"todoCoin":"4"},{"todoCoin":"3"},{"todoCoin":"2"},{"todoCoin":"6"},{"todoCoin":"8"},{"todoCoin":"10"},{"todoCoin":"2"},{"todoCoin":"4"},{"todoCoin":"3"},{"todoCoin":"8"},{"todoCoin":"1"},{"todoCoin":"1"}] 这是我仅有的htmlJavascript 为什么json_编码的数据不显示,javascript,php,chart.js,Javascript,Php,Chart.js,我添加了chartJS,效果很好,当我试图将我的json_编码的php数组添加到chartJS的数据字段时,我遇到了这个问题。我的问题是图表无法将我的数据添加到条形图中。看到图片了吗 这就是我使用print_r输出数据时json_编码的数组的样子 [{"todoCoin":"1"},{"todoCoin":"1"},{"todoCoin":"1"},{"todoCoin":"1"},{"todoCoin":"1"},{"todoCoin":"6"},{"todoCoin":"5"},{"todo
<div class="container">
<canvas id="myChart"></canvas>
</div>
要从json数组输出数据,应使用
json\u decode
。假设$data
是您声明json数组的内容:
<?php
$decoded_data = json_decode($data);
foreach ($decoded_data->{'todoCoin'} as $todoCoin) {
echo $todoCoin;
}
?>
根据您发布的内容,我在您的问题中添加了一个片段(删除php,只保留数组)。如果这是错误的,您可以单击编辑并将其回滚到原始位置:)
数据
应该是一个数字数组。使用json\u encode()
可以获得一个json对象。另外,todoCoin:“1”是字符串而不是数字。你的数据应该像[1,4,5,…,6]
我试着把它解析成一个int,比如$data[]=(int)$row;但它仍然不起作用…json_encode()
对您不起作用,您需要在数组中循环并回显用逗号分隔的值,或者您可以尝试回显内爆(“,”,$data”)
如果我尝试foreach($data as$test){echo$test,“\n”}我会在第19行的/var/www/html/todo/chartTodo.php中得到通知:数组到字符串的转换将foreach添加到数据中时:[]它只会破坏所有代码:请尝试我发布编辑的更新答案,并让我知道它是如何进行的。我想你只是想保持你的价值观。
<script>
var myChart = document.getElementById('myChart').getContext('2d');
// Global Options
Chart.defaults.global.defaultFontFamily = "Lato";
Chart.defaults.global.defaultFontsize = 18;
Chart.defaults.global.defaultFontColor = "#777";
var test = 80;
var massPopChart = new Chart(myChart, {
type:'bar', // bar, horizontalBar, pie, doughnut, radar, polarArea
data: {
labels:['Färdiga todo', 'Tid nedlagt', 'Användare'],
datasets: [{
label:'Todo Score',
data:[
<?php echo json_encode($data);?>,
<?php echo json_encode($data);?>,
<?php echo json_encode($data);?>
],
backgroundColor:[
'rgba(128,128,0)',
'rgba(255,0,0)',
'rgba(0,0,255)'
],
borderWidth: 1,
borderColor: '#777',
hoverBorderWidth: 3,
hoverBorderColor: '#000'
}]
},
options: {
title: {
display: true,
text: 'Överblick på din todoScore',
fontSize: 25,
},
legend:{
position: "right"
}
}
});
</script>
<?php
$decoded_data = json_decode($data);
foreach ($decoded_data->{'todoCoin'} as $todoCoin) {
echo $todoCoin;
}
?>
<?php
$decoded = json_decode($data); // decode your json 2d array
$decoded_array = array(); // create new 1D array
# break down the first array
foreach ($decoded as $todoCoins) {
# break down the second array
foreach ($todoCoins as $todoCoin) {
# append each value, ignoring the 'todoCoin' key, to the new 1d array
array_push($decoded_array, $todoCoin);
}
}
echo implode(", ", $decoded_array); // outputs 1,1,1,1,1,6,5,3,1, etc...
?>