合并两个数组并将其发送到Highcharts

zzoitvuj  于 2023-11-19  发布在  Highcharts
关注(0)|答案(1)|浏览(111)

我正在尝试适应在网上获得的代码供我使用。我有很多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
  }
});


我想调整这段代码,使etimedatetime而不是category。据我从网上了解,我应该将合并数组$etime$value组合成一个数组对[$etime, $value],并将categories: etime更改为type: 'datetime'。然而,我不知道如何做到这一点。
例如$etime = [0,1,2]$value = [3,4,5],我需要[[0,3],[1,4],[2,5]]
你能帮帮我吗?

mwg9r5ms

mwg9r5ms1#

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'
    }
});

相关问题