多维数组MySQLi-->;PHP-->;JSON-->;海图
我试图从一个充满传感器值的MySQL数据库中创建一个JSON数组。我正在尝试从MySQL结果创建一个多维数组,这样一个查询就可以完成所有任务,从而有望减少服务器负载 我想使用highcharts中的结果来绘制多个传感器节点和多个传感器的结果。我想用时间轴绘制结果 首先,我不确定一个包含我所有数据的大数组是否是正确的方法,或者多个较小的数组是否更好,欢迎对此发表任何评论。我在寻找帮助的是创建一个JSON数组 到目前为止,我得到的是:多维数组MySQLi-->;PHP-->;JSON-->;海图,php,mysql,json,multidimensional-array,Php,Mysql,Json,Multidimensional Array,我试图从一个充满传感器值的MySQL数据库中创建一个JSON数组。我正在尝试从MySQL结果创建一个多维数组,这样一个查询就可以完成所有任务,从而有望减少服务器负载 我想使用highcharts中的结果来绘制多个传感器节点和多个传感器的结果。我想用时间轴绘制结果 首先,我不确定一个包含我所有数据的大数组是否是正确的方法,或者多个较小的数组是否更好,欢迎对此发表任何评论。我在寻找帮助的是创建一个JSON数组 到目前为止,我得到的是: <?php require_once 'db_login.
<?php
require_once 'db_login.php'; //get login details for the database
$db_server = new mysqli($db_hostname, $db_username, $db_password, $db_database)or die('There was a problem connecting to the database');
$query = "
SELECT sensorID,timeStamp,theDate,theDay,theHour,avgTemp,avgHumidity,avgLight,avgOccupied
FROM
(
select
`sensor_id` AS sensorID,
`value_date` AS timeStamp,
DAY(`value_date`) AS theDate,
DAYNAME(`value_date`) AS theDay,
HOUR(`value_date`) AS theHour,
AVG(`value_temp`) AS avgTemp,
AVG(`value_humidity`) AS avgHumidity,
AVG(`value_light`) AS avgLight,
AVG(`value_PIR`) AS avgOccupied
FROM sensor_value
WHERE `value_date` >= (NOW() - INTERVAL 7 DAY)
AND `value_date` < NOW()
GROUP BY sensorID,theDate,theHour
) s
GROUP BY sensorID,theDate,theHour;
";
$result = $db_server->prepare($query);
$result->execute();
$result->bind_result($sensorID, $timeStamp, $theDate, $theDay, $theHour, $avgTemp, $avgHumidity, $avgLight, $avgOccupied);
while ($result->fetch())
{
//if($theHour<1) $theHour=0.000001;
// $data[$sensorID][$theDate][$theDay][$theHour] = array(
// "Temp" => $avgTemp,
// "Humidity" => $avgHumidity,
// "Light" => $avgLight,
// "Occupied" => $avgOccupied
// );
$data[]['ID'] = array(
"SensorID" => $sensorID,
"DateID" => array(
"Date" => $theDate,
"Day" => $theDay,
"HourID" => array(
"Hour" => $theHour,
"Results" => array(
"Temp" => $avgTemp,
"Humidity" => $avgHumidity,
"Light" => $avgLight,
"Occupied" => $avgOccupied
),
),
),
);
);
}
header("content-type: application/json");
echo json_encode($data, JSON_PRETTY_PRINT);
$db_server->close();
?>
如何将结果嵌套在同一传感器下,然后嵌套在同一天下
我从以下代码开始:
while ($result->fetch())
{
$data[$sensorID][$theDate][$theDay][$theHour] = array(
"Temp" => $avgTemp,
"Humidity" => $avgHumidity,
"Light" => $avgLight,
"Occupied" => $avgOccupied
);
}
有我想要的那种正确的嵌套,但并没有键,所以我发现很难实际使用结果。剪掉上面的代码:
{
"123456789012": {
"16": {
"Sunday": {
"16": {
"Temp": "21.314019",
"Humidity": "66.471028",
"Light": "673.0561",
"Occupied": "0.1402"
},
"17": {
"Temp": "21.927350",
"Humidity": "63.827350",
"Light": "649.4188",
"Occupied": "0.0684"
},
"18": {
"Temp": "22.291525",
"Humidity": "63.710169",
"Light": "615.2712",
"Occupied": "0.0339"
},
"19": {
"Temp": "21.324576",
"Humidity": "64.744068",
"Light": "468.7542",
"Occupied": "0.0085"
},
"20": {
"Temp": "20.801709",
"Humidity": "67.853846",
"Light": "401.1197",
"Occupied": "0.0000"
},
"21": {
"Temp": "20.383051",
"Humidity": "68.610169",
"Light": "183.9407",
"Occupied": "0.0000"
},
"22": {
"Temp": "20.104237",
"Humidity": "69.753390",
"Light": "16.9068",
"Occupied": "0.0000"
},
"23": {
"Temp": "19.939831",
"Humidity": "70.229661",
"Light": "133.5678",
"Occupied": "0.0000"
}
}
},
"17": {
"Monday": [
{
"Temp": "19.728205",
"Humidity": "70.501709",
"Light": "8.0000",
"Occupied": "0.0000"
},
......etc....
]
我已经尝试添加一个foreach循环来嵌套数据,但无法构造一个合适的函数来工作
有人能帮我创建这个阵列吗?还是我让自己的生活很艰难?我应该转到多个查询吗
已编辑
期望输出:
[
{
"ID": {
"SensorID": 123456789012,
"DateID": {
"Date": 16,
"Day": "Sunday",
"HourID": {
"Hour": 17,
"Results": {
"Temp": "21.965217",
"Humidity": "62.708696",
"Light": "649.1449",
"Occupied": "0.0725"
}
"Hour": 18,
"Results": {
"Temp": "22.291525",
"Humidity": "63.710169",
"Light": "615.2712",
"Occupied": "0.0339"
}
"Hour": 19,
"Results": {
"Temp": "21.324576",
"Humidity": "64.744068",
"Light": "468.7542",
"Occupied": "0.0085"
}
}
}
}
},
....etc....
]
你想要什么结构?与列出的第一个输出相同,但我不希望重复传感器ID或重复一天。呃…看起来你已经这样做了。但是如何使用所需的关键帧获得正确的嵌套?每个对象的关键帧不能超过1个“小时”。
[
{
"ID": {
"SensorID": 123456789012,
"DateID": {
"Date": 16,
"Day": "Sunday",
"HourID": {
"Hour": 17,
"Results": {
"Temp": "21.965217",
"Humidity": "62.708696",
"Light": "649.1449",
"Occupied": "0.0725"
}
"Hour": 18,
"Results": {
"Temp": "22.291525",
"Humidity": "63.710169",
"Light": "615.2712",
"Occupied": "0.0339"
}
"Hour": 19,
"Results": {
"Temp": "21.324576",
"Humidity": "64.744068",
"Light": "468.7542",
"Occupied": "0.0085"
}
}
}
}
},
....etc....
]