首页 > 解决方案 > 如何在数据chart.js中插入php

问题描述

我正在尝试在数据中添加一个 php 变量:在 chart.js 中。示例说data: [<?php echo $dates ?>],这会做,但是当我尝试这样做时,它立即给我一个错误,即 < 是一个意外的标记。这在某种程度上是有道理的。我把它放在一个字符串["<?php echo $dates ?>"]中,但是我没有得到任何结果。

while ($stelling = mysqli_fetch_array($records1)){

    $Timer = date('M, Y', strtotime($stelling['Timer']));
    $Wheight = $stelling['Wheight'];
    $Title = $stelling['Title'];

    $Timers = '';
    $Wheights = '';
    $Titles = '';

    $Timers = $Timers.'"'.$Timer.'",';
    $Wheights = $Wheights.$Wheight.',';
    $Titles = $Titles.$Title.',';

    $Timers = trim($Timers, ",");
    $Wheights = trim($Wheights, ",");
    $Titles = trim($Titles, ",");


}
echo '<script src="script/graph.js"></script>'; 

脚本文件:

var ctx = document.getElementById('myChart').getContext('2d');

var myChart = new Chart(ctx, {
    type: 'line',
    data: {
        datasets: [{
            label: 'Time',
            data: ["<?php echo $Timers ?>"],
            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
        }

我希望图表显示存储在变量中的数据

标签: javascriptphpchart.js

解决方案


添加到前面的评论中,PHP 数组与 JavaScript 数组不同。有很多方法可以做到这一点,一种是$timers在 PHP 中循环遍历数组,然后将其转换为相应的 JavaScript

假设时间包含array('label'=>'Today','data'=>55);

那么你可以使用foreachfor来构建相应的 JavaScript 数组

<script type='text/javascript'>
    let data=[];// this is a javascript array

    <?php 
    $timersCount=count($timers);
    for($i=0; $i<$timersCount i++){
    ?>
       data.push({
           data:<?php echo $timers[$i]['data']?>,
           label:<?php echo $timers[$i]['label']?>
        });
    <?php
    }?>
</script>

可能有错字,我只是输入了它,但你明白了。我假设您在 PHP 视图文件中运行脚本。


推荐阅读