获取符合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
相关产品推荐
相关产品推荐

