You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

获取符合Highcharts要求的JSON格式数据的技术咨询

实现Highcharts图表的PHP数据处理方案

嘿,我帮你把这段代码补全并调整成符合Highcharts要求的格式,这样你的图表就能顺利拿到正确的数据啦!

需求回顾

Highcharts需要的JSON数据格式是类似这样的:[ [ 1167609600000, 21 ] ]——第一个元素是毫秒级时间戳,第二个是对应的数据值(比如你这里的温度temp)。

完整的PHP脚本实现

我把你的代码补全并优化了,直接用就行:

<?php
// 建立数据库连接
$connection = mysqli_connect('localhost','abc','def','ghi') or die("数据库连接失败: " . mysqli_error($connection));

// 执行查询——注意把your_table_name换成你实际的表名!
$sql = "SELECT test, temp FROM your_table_name"; 
$result = mysqli_query($connection, $sql) or die("查询出错: " . mysqli_error($connection));

// 准备存储图表数据的数组
$chartData = [];

// 遍历查询结果,整理成Highcharts需要的格式
while ($row = mysqli_fetch_assoc($result)) {
    // 把日期字段转成毫秒级时间戳(如果test是日期字符串的话)
    // 如果test本身就是毫秒时间戳,直接用$row['test']就行
    $timestamp = strtotime($row['test']) * 1000; 
    $temperature = (float)$row['temp'];
    $chartData[] = [$timestamp, $temperature];
}

// 设置响应头为JSON格式,输出数据
header('Content-Type: application/json');
echo json_encode($chartData);

// 关闭数据库连接
mysqli_close($connection);
?>

几个必须注意的点

  • 表名别写错:你原来的SQL里写的FROM database,database是MySQL的关键字,绝对不能当表名用,一定要换成你实际的表名!
  • 时间戳要转对:如果你的test字段存的是日期字符串(比如2024-05-20),必须用strtotime()转成秒级时间戳再乘1000,变成毫秒级——Highcharts只认这个格式的时间戳。要是test本身已经是毫秒数,直接用就行。
  • 数据类型要对:把temp转成浮点型,避免出现字符串类型的数据导致图表渲染异常。
  • 响应头不能忘:输出JSON前一定要加header('Content-Type: application/json'),不然前端可能没法正确解析数据。

内容的提问来源于stack exchange,提问作者Castigliano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:25:26