如何将 PHP 变量从一个文件多次传递到另一个文件?

How do I pass a PHP variable from one file to another multiple times?

我在名为 charts.php 的文件中有一个 highstock 图表,它从名为 data.php 的辅助文件重新加载图表数据。鉴于我的 highstock 图表中有 5 个系列,我必须调用 data.php 文件 5 次,每次都使用不同的变量,但是当我在 charts.php 文件中设置变量时,它只使用最后一个设置这个变量的值。是否有可能解决这个问题,或者这只是 PHP 的工作方式?我是否必须创建 5 个单独的 data.php 文件才能使其正常工作?

我的代码基本上是这样的(为了简短起见,显示了 2 个系列):

var chart = new Highcharts.StockChart({
    chart: {
        renderTo: 'chart'
    },

    title : { text : 'MyChart' },

    series : [
        {
            name : 'Unit 0',
            data : [],
            tooltip: { valueDecimals: 1, valueSuffix: ' kW' },
        },
        {
            name : 'Unit 1',
            data : [],
            tooltip: { valueDecimals: 1, valueSuffix: ' kW' },
        }
    ]
});

<?php $_SESSION["unit"] = 0; ?>

$.getJSON( "data.php", function (data) {
    chart.series[0].setData( data );
});

<?php $_SESSION["unit"] = 1; ?>

$.getJSON( "data.php", function (data) {
    chart.series[1].setData( data );
});

所以问题是 series[0] 和 series[1] 都使用我的变量的最后一个值,在本例中是 $_SESSION["unit"] = 1。这是一种方法让这个工作?还有更好的选择吗?

也许如果我可以在一个文件中为所有系列创建数据并以某种方式拆分该数据并将其分别传递给系列 [0] 和系列 [1],但我不知道该怎么做......

感谢任何帮助。

也许您可以修改 data.php 文件,因此不要使用 $_SESSION["unit"] 来确定要使用的变量,而是使用 $_GET["unit"]。然后,在您上面的代码中,它将是:

$.getJSON( "data.php?unit=0", function (data) {
    chart.series[0].setData( data );
});

$.getJSON( "data.php?unit=1", function (data) {
    chart.series[1].setData( data );
});

这取决于您的需要,如果 $unit 值始终相同,我将只调用 data.php 一次并使用 JS 响应一次更新所有图表。

如果 $unit 有一个动态变量,我会将它与 $.getJSON 函数一起发送。

var data = {
  unit: $_GET['unit']
};

$.getJSON( "data.php", data, function (response) {
  updateGraph(graph, response);
});

有关getJSON函数结构的更多信息,请访问http://api.jquery.com/jquery.getjson/