我正在尝试改编从网上获得的代码以供我使用。我在 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]]
。我不明白$
标志的含义。
你能帮我解决这个问题吗?
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'
}
});