PHP:选择、分组并仅显示具有相同键值的数组?
我有一个MySQL数据库,它保存车辆OBD-II读卡器的日志数据。与读取器接口的应用程序收集大量(通常远远超过2000个)数据点集。每个数据点集在表中都有自己的行,结果如下:PHP:选择、分组并仅显示具有相同键值的数组?,php,mysql,sql,Php,Mysql,Sql,我有一个MySQL数据库,它保存车辆OBD-II读卡器的日志数据。与读取器接口的应用程序收集大量(通常远远超过2000个)数据点集。每个数据点集在表中都有自己的行,结果如下: +---------------+----------------------------------+---------------+----+----+-----+ | session | id | time | kd | kf
+---------------+----------------------------------+---------------+----+----+-----+
| session | id | time | kd | kf | ... |
+---------------+----------------------------------+---------------+----+----+-----+
| 1420236074526 | 5cff4a3cc80b22cecb7de85266b25355 | 1420236074534 | 14 | 8 | ... |
| 1420236074526 | 5cff4a3cc80b22cecb7de85266b25355 | 1420236075476 | 17 | 8 | ... |
| 1420236074526 | 5cff4a3cc80b22cecb7de85266b25355 | 1420236075476 | 19 | 8 | ... |
| 1420236074526 | 5cff4a3cc80b22cecb7de85266b25355 | 1420236075476 | 23 | 8 | ... |
| 1420236074526 | 5cff4a3cc80b22cecb7de85266b25355 | 1420236077477 | 25 | 8 | ... |
+---------------+----------------------------------+---------------+---------+-----+
k5
和kf
是车辆数据类型(分别为车速和环境空气温度)
此表中有两个索引(称为raw\u log
):
- session映射到列
和session
id
- id映射到列
id
<select>
<option>January 1, 2015 - 7:43AM</option>
<option>January 1, 2015 - 5:15PM</option>
<option>January 2, 2015, - 7:38AM</option>
...
</select>
这很有效。。。某种程度上。我得到的会话时间是数组,kd
和kf
下面有正确的键/值对,但它似乎不想遍历整个过程。目前表中大约有25000行,但它只返回了一些,而且似乎没有任何逻辑顺序来显示列表。。。它将从1月8日返回两个结果,从9日返回一个,从10日返回4个,以此类推
选择具有相同时间戳的所有会话、对它们进行分组并创建仅显示给定会话数据的可选对象的最佳方法是什么?如果您没有对查询排序,则列表可能没有任何逻辑顺序。此外,如果
session
列中存在重复值,则会覆盖会话数据。您可能需要执行类似于$sessionArray[$s_time][]=array(…
的操作来将每一行追加到会话id下。此外,如果遇到问题,最好将查询结果限制在20-100左右,并持续按摩,直到得到所需的结果
$session = $database->query("SELECT * FROM raw_logs USE INDEX (session)");
$sessionArray = array();
foreach($session as $session){
$s_time = $session["session"];
$sessionArray[$s_time] = array(
"vehicle_speed" => $session["kd"],
"ambient_air_temp" => $session["kf"]
);
} print_r($sessionArray);