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

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

我正在尝试适应在网上获得的代码供我使用。我有很多C,C++和Python的经验,但几乎没有PHP,所以我不知道从哪里开始,因为我不完全理解代码和PHP概念。
因此,我们的想法是,程序从SQL表中读取数据,etime是纪元时间(整数),value是浮点值(字符串)。然后使用Highcharts绘制这些数据,其中在原始代码中,etime是类别。
PHP部分:

  1. $etime = json_encode(array_reverse(array_column($sensor_data, 'etime')), JSON_NUMERIC_CHECK);
  2. $value = json_encode(array_reverse(array_column($sensor_data, 'value')), JSON_NUMERIC_CHECK);
  3. var etime = <?php echo $etime; ?>;
  4. var value = <?php echo $value; ?>;

字符串
JavaScript(?)部分:

  1. var chartT = new Highcharts.Chart({
  2. series: [{
  3. data: value
  4. }],
  5. xAxis: {
  6. categories: etime
  7. }
  8. });


我想调整这段代码,使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

  1. // Assuming $sensor_data is already populated with your data
  2. $combined_data = array();
  3. foreach ($sensor_data as $data) {
  4. $etime_millisec = intval($data['etime']) * 1000; // Convert to milliseconds
  5. $value = floatval($data['value']); // Ensure value is a float
  6. $combined_data[] = array($etime_millisec, $value);
  7. }
  8. $combined_data_json = json_encode(array_reverse($combined_data), JSON_NUMERIC_CHECK);

字符串
然后在HighChart部分中,您可以更改为日期时间

  1. var chartData = <?php echo $combined_data_json; ?>;
  2. var chartT = new Highcharts.Chart({
  3. series: [{
  4. data: chartData
  5. }],
  6. xAxis: {
  7. type: 'datetime' // Changed from 'categories' to 'datetime'
  8. }
  9. });

展开查看全部

相关问题