使用php数组创建标签和数据

时间:2016-12-17 13:35:07

标签: javascript php html5 chart.js

当我将数组作为参数传递给图表时,它会停止在网络上显示   页。

<?php
$f = fopen("C:\wamp64\www\dashb\CSV\salespermonthdollars.csv", "r");
$labels = array();
$data = array();
$loopCounter = 0;
while (($line = fgetcsv($f)) !== false) {
  if($loopCounter == 0){
    // this if is to skip the first row or the columns
  } else {
    array_push($labels,$line[0]);
    array_push($data,$line[1]);
  }
  $loopCounter = $loopCounter + 1; 
}
fclose($f); 
?>

所以上面我读了我从查询结果中保存的csv文件,并尝试将其绘制在图表上:

<canvas id="myChart2">
<script>
$array3 = [1,2,3,4,5,5,41]; 
$array4 = [1,2,3,4,5,5,41];
var ctx = document.getElementById('myChart2').getContext('2d');
var myBarChart = new Chart(ctx, {
    type: 'bar',
    data: {
    labels: $array3, //when i change this to $labels doesn't work same for4
    datasets: [{
      label: 'label',
      data: $array4,
      backgroundColor: "rgba(100,255,51,0.4)"
     }]
  }
    });
</script>
</canvas>

主要是我在图表上显示查询结果。我执行,保存到csv并阅读
从那里。

欢迎任何改进方法的建议,我觉得它可以比这更容易。

1 个答案:

答案 0 :(得分:1)

这是因为$labels不是Javascript,而是PHP变量。所以你需要做的是在代码的php部分解码它:

...
fclose($f); 
$labels = json_decode($label);

在Javascript部分:

var labels = JSON.parse("<?php echo $labels; ?>");

作为改进建议的一部分,you should not declare global variables。那你在这里做什么:

$array3 = [1,2,3,4,5,5,41]; 
$array4 = [1,2,3,4,5,5,41];

应该是:

var array3 = [1,2,3,4,5,5,41]; 
var array4 = [1,2,3,4,5,5,41];

我从名字中删除了$ - 美元,因为it's common practice to declare jQuery wrapper variables而这些显然不是。另外,通过$前缀到他们的名字,我只能猜测你想要做的是在你的<script>中声明php变量然后直接使用它们,但是它是不可能的< / strong>,因为首先,你缺少<?php部分,第二部分 - 它们只会通过声明它们而保存在内存中。