【发布时间】:2021-05-11 07:29:04
【问题描述】:
我正在尝试使用 chartjs 绘制两个图表。我想通过使用for loop 来声明图表对象所需的变量,让我的生活更简单。
问题是我创建了一个二维数组,每一行存储当前年份的数据,下一行存储连续年份的数据,依此类推。我正在尝试使用循环访问变量的行。
这是我的图表对象
var canvas6= {
type: 'doughnut',
data: {
datasets: [{
data: [
<?php
for($i=0;$i<count($dataAgeGrp[1]);$i++){ -------->Note here
echo $dataAgeGrp[1][$i]; -------->And here
echo ',';
}
?>
],
backgroundColor: [
<?php
for($i=0;$i<count($ageCategory);$i++){
$rand = str_pad(dechex(rand(0, 0xFFFF00)), 6, 0, STR_PAD_LEFT);
echo('"#' . $rand.'"');
echo ",";
}
?>
],
label: 'Pie Chart'
}],
labels: [
<?php
for($i=0;$i<count($ageCategory);$i++){
echo $ageCategory[$i];
echo ',';
}
?>
],
},
options: {
responsive: true
}
};
$(function () {
var ctx126 = document.getElementById('canvas6').getContext('2d');
window.myPie = new Chart(ctx126 , canvas6);
});
所以,我尝试了类似的方法
for(var k=0;k<3;k++){
var q=26;
var canvas+q = {
type: 'doughnut',
data: {
datasets: [{
data: [
<?php
for($i=0;$i<count($dataAgeGrp[k]);$i++){
echo $dataAgeGrp[k][$i];
echo ',';
}
?>
],
backgroundColor: [
<?php
for($i=0;$i<count($ageCategory);$i++){
$rand = str_pad(dechex(rand(0, 0xFFFF00)), 6, 0, STR_PAD_LEFT);
echo('"#' . $rand.'"');
echo ",";
}
?>
],
label: 'Pie Chart'
}],
labels: [
<?php
for($i=0;$i<count($ageCategory);$i++){
echo $ageCategory[$i];
echo ',';
}
?>
],
},
options: {
responsive: true
}
};
$(function () {
var ctx1+q = document.getElementById('canvas'+q).getContext('2d');
window.myPie = new Chart(ctx1+q , canvas+q);
});
q=q+1;
但我收到此错误
Use of undefined constant k - assumed 'k' (this will throw an Error in a future version of PHP)
我该如何解决?
【问题讨论】:
-
节省大量渲染时间,将
for($i=0;$i<count($ageCategory);$i++){ echo $ageCategory[$i]; echo ','; }替换为echo implode(',', $ageCategory); -
这能回答你的问题吗? How can you use php in a javascript function
-
这通常是一种糟糕的做事方式(为此)。在 PHP 中准备任何数据,将其编码为 JSON 并将其存储在 JS 变量中,这样您就可以在 JS 中进行所有循环,而无需再依赖 PHP。
-
@Tschallacka No
-
@El_Vanja 我已经明白了。因为页面的性能相当低。但是,我不知道/没有任何文件可以参考,按照你说的去做。请给我一些提示
标签: javascript php