在内联PHP中包含Javascript变量


Including a Javascript variable in inline PHP

我正在使用图表绘制图表。现在要放在图表上的点是一个数组,我正在循环所有结果以绘制多个图表。

根据循环中的当前位置,我想要一个包含 PHP 数组值的图表。

这是我当前的代码

$('.ct-chart-current').each(function(i,v) {
    new Chartist.Line(this, {
        labels: [<?php echo $labelscurrent[0] ?>],
        series: [
            [<?php echo $current[X] ?>]
        ]
    }, currentopts);
});

您可以看到我正在尝试从$current数组中获取值 X。现在我如何在每个循环中使用函数调用中的"i"

伪代码

$('.ct-chart-current').each(function(--> i <-- ,v) {
    new Chartist.Line(this, {
        labels: [<?php echo $labelscurrent[0] ?>],
        series: [
            [<?php echo $current[ -->i <--] ?>]
        ]
    }, currentopts);
});

我在 JavaScript "i" 周围添加了箭头,我希望在我的 PHP 中回响。我已经尝试了不同类型的方法,例如在我的 PHP 中回显<script>标签,但我猜应该有一种更简单的方法?

不容易。你只需要了解PHP和Javascript之间的主要区别。第一个是服务器端。其次是客户端。当客户端得到javascript时,服务器端(所以,PHP)已经被解析了。

执行所需操作的一种方法是使用简单的格式(如 JSON)输出$current数组,这在 Javascript 中很容易获取。例如。。。

var currentArray = <?php echo json_encode($currentArray); ?>;
var labels = <?php echo json_encode($labelscurrent); ?>;
$('.ct-chart-current').each(function(i, v) {
    new Chartist.Line(this, {
        labels: labels[i],
        series: [currentArray[i]]
    });
}, currentopts);

显然,您必须用您的变量替换变量,因为我们错过了您的代码;)但是你有诀窍:通过回显json_encoded值将值从PHP传递到Javascript。

您可以对PHP变量进行JSON编码并打印它们。
对于series数据,您需要将数据放入单独的 JavaScript 变量中,然后在 JavaScript 运行时访问它。

var series_data = <?php echo json_encode($current); ?>;
$('.ct-chart-current').each(function(i,v) {
    new Chartist.Line(this, {
        labels: <?php echo json_encode($labelscurrent[0]); ?>,
        series: [
            series_data[i]
        ]
    }, currentopts);
});