-1

我将implode()函数用于条形图中的 2 个项目:

1.)对于检查点(这是一个整数值,这为条形图提供了值data在 js 代码中的数据下保存的值)。哪个完美

2.) 对于模块名称(只是字符串,模块的名称)。我粘贴在下面labels

但是,标签下的条形图中的列名称(模块名称)没有显示,但是在我的网页的检查元素中,它们显示在那里。错误是控制台是:SyntaxError: Unexpected identifier 'ManagementCareer'. Expected either a closing ']' or a ',' following an array element.

编码:

$query = "SELECT `module`.`ModuleName`,`userTakingModule`.`checkPoint` FROM `userTakingModule` JOIN `module`ON `userTakingModule`.`ModuleID`= `module`.`ModuleID` JOIN `users`ON `userTakingModule`.`idUsers`=`users`.`idUsers` WHERE `userTakingModule`.`idUsers`=  '".$_SESSION['id']."' ";

    //Execute
    $result = $conn -> query($query);

    $moduleCheckPoint = Array();
    $moduleName = Array();


    while($row = $result -> fetch_assoc()) 
          {
            $moduleCheckPoint[] = $row['checkPoint'];
            $moduleName[] = $row['ModuleName'];

          }

<?php
    $modCheckPoint = implode(',',$moduleCheckPoint);
    $modName = implode(',', $moduleName);
?>

                <script type="text/javascript">
                    var ctx = document.getElementById("my3Chart");
                    var myBarChart = new Chart(ctx, {
                        type: 'bar',
                        data: {
                            labels: [<?php echo $modName ?>],
                            datasets: [{
                                label: 'Module Tracker',
                                data: [<?php echo $modCheckPoint ?>],
                                backgroundColor: [
                                    'rgba(255, 99, 132, 0.2)',
                                    'rgba(54, 162, 235, 0.2)',
                                    'rgba(255, 206, 86, 0.2)',
                                    'rgba(75, 192, 192, 0.2)',
                                    'rgba(153, 102, 255, 0.2)',
                                    'rgba(255, 159, 64, 0.2)'
                                ],
                                borderColor: [
                                    'rgba(255,99,132,1)',
                                    'rgba(54, 162, 235, 1)',
                                    'rgba(255, 206, 86, 1)',
                                    'rgba(75, 192, 192, 1)',
                                    'rgba(153, 102, 255, 1)',
                                    'rgba(255, 159, 64, 1)'
                                ],
                                borderWidth: 1
                            }]
                        },
                        options: {
                            scales: {
                                yAxes: [{
                                    ticks: {
                                        beginAtZero:true
                                    }
                                }]
                            }
                        }
                    });
                    </script>

模块检查点工作正常并填充条形图,但是模块名称根本没有出现。请有人可以强调我做错了什么?

应该出现什么(模块名称): 模块名称

在检查元素下,他们显示:

在控制台下检查元素

4

1 回答 1

2

这里正确的方法是使用json_encode函数:

$modCheckPoint = json_encode($moduleCheckPoint);
// though `$moduleName` is array of numbers - you can leave `implode`
// but in case of array strings - always use `json_encode`
$modName = implode(',', $moduleName);

还:

labels: <?php echo $modName ?>,  // remove [] here, as `json_encode` returns them already.
于 2019-04-11T19:22:53.717 回答