组合两个数组并将它们发送到 Highcharts

问题描述 投票:0回答:1

我正在尝试改编从网上获得的代码以供我使用。我在 C、C++ 和 Python 方面有很多经验,但在 PHP 方面几乎没有,所以我不知道从哪里开始,因为我不完全理解代码和 PHP 概念。

因此,程序从 SQL 表中读取数据,

etime
是纪元时间(整数),
value
是浮点值(字符串)。然后使用 Highcharts 绘制这些数据,其中原始代码中的
etime
是类别。

PHP部分:

$etime = json_encode(array_reverse(array_column($sensor_data, 'etime')), JSON_NUMERIC_CHECK);
$value = json_encode(array_reverse(array_column($sensor_data, 'value')), JSON_NUMERIC_CHECK);

var etime = <?php echo $etime; ?>;
var value = <?php echo $value; ?>;

Javascript(?)部分:

var chartT = new Highcharts.Chart({
  series: [{
    data: value
  }],
  xAxis: { 
    categories: etime
  }
});

我想调整此代码,以便

etime
datetime
而不是类别。据我从网上了解到的,我应该将数组
etime
value
组合成
[etime, value]
对数组,并将
categories: etime
更改为
type: 'datetime'
。但是,我不知道该怎么做。

举个例子

etime = [0,1,2]
value = [3,4,5]
,我需要
[[0,3],[1,4],[2,5]]
。我不明白
$
标志的含义。

你能帮我解决这个问题吗?

javascript php highcharts
1个回答
0
投票

PHP 可以这样组合数组。你需要将时间乘以1000才能得到JS/HighChart期望的MS

// Assuming $sensor_data is already populated with your data
$combined_data = array();
foreach ($sensor_data as $data) {
    $etime_millisec = intval($data['etime']) * 1000; // Convert to milliseconds
    $value = floatval($data['value']); // Ensure value is a float
    $combined_data[] = array($etime_millisec, $value);
}

$combined_data_json = json_encode(array_reverse($combined_data), JSON_NUMERIC_CHECK);

然后在 HighChart 部分你可以更改为日期时间

var chartData = <?php echo $combined_data_json; ?>;

var chartT = new Highcharts.Chart({
    series: [{
        data: chartData
    }],
    xAxis: { 
        type: 'datetime' // Changed from 'categories' to 'datetime'
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.