【问题标题】:Using PHP and Javascript in a hybrid way, to traverse through a loop以混合方式使用 PHP 和 Javascript,遍历循环
【发布时间】: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&lt;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


【解决方案1】:

如果您可以在 JavaScript 代码中使用 PHP 变量,则相反是不可能的。将 JavaScript 变量传递给 PHP 代码的唯一方法是通过请求(使用 GET/POST 参数或 AJAX 请求重新加载页面)

【讨论】:

    猜你喜欢
    • 2011-08-01
    • 2021-08-25
    • 2021-11-12
    • 2014-07-06
    • 1970-01-01
    • 2011-10-13
    • 2013-11-23
    • 1970-01-01
    相关资源
    最近更新 更多