繁体   English   中英

PHP:仅选择,分组和显示具有相同键值的数组?

PHP: Selecting, grouping, and showing only arrays with the same key value?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个MySQL数据库,该数据库保存来自车辆的OBD-II阅读器的日志数据。 与阅读器交互的应用程序收集了大量(通常超过2,000个)数据点集。 这些数据点集的每一个在表中都有其自己的行,结果如下:

+---------------+----------------------------------+---------------+----+----+-----+
| 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  | ... |
+---------------+----------------------------------+---------------+---------+-----+

k5kf是车辆数据类型(分别为车速和环境空气温度)。

该表中有两个索引(称为raw_logs ):

  • 会话映射到sessionid
  • id映射到列id

我想做的是获取所有具有相同时间戳的行(例如1420236074526 ),并将它们合并为一个“会话”。 这里的目标是创建一个选择列表,我可以在其中按会话查看数据。 理想情况下,我将输出如下内容:

<select>
  <option>January 1, 2015 - 7:43AM</option>
  <option>January 1, 2015 - 5:15PM</option>
  <option>January 2, 2015, - 7:38AM</option>
  ...
</select>

到目前为止,这是我所拥有的(我正在使用Medoo尝试简化查询):

$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);

这行得通... 我得到了正确的键/值对的会话时间,以及数组下的kdkf ,但是它似乎不想遍历整个过程。 目前,该表中大约有25,000行,但仅返回一些,并且列表似乎没有任何逻辑顺序...它将从1月8日返回两个结果,从9日返回一个结果,从10号起4条,依此类推。


选择具有相同时间戳的所有会话,对其进行分组并创建仅显示给定会话数据的可选对象的最佳方法是什么?

1 个回复

如果您不对查询进行排序,则列表可能没有任何逻辑顺序。 另外,您将覆盖session列中存在重复值的会话数据。 您可能想要执行类似$sessionArray[$s_time][] = array(... ,将每行附加在会话ID下。此外,如果遇到问题,最好将查询结果限制为例如20到100,并保持按摩直至获得所需的结果。

1 PHP合并数组(如果它们具有相同的键值)

我有一个关联数组的数组。 我想对这个数组进行排序,如果 那么我需要执行在这种情况下返回的合并: 当然,我们需要考虑可能存在多个满足此要求的数组,我们也必须将它们合并。 我尝试了几件事,导致了映射和foreach合并,这些工作要花很长时间才能完成,最终使它无法正常工作 ...

2 合并具有相同键值的PHP数组

我正在尝试将具有相同键和不同值的数组合并,如下所示。 输入: 预期输出为: 我已经尝试了array_merge和array_merge_recursive但是它没有按预期工作。 array_merge_recursive($array1[1933], $array2[1933])它正在 ...

4 按键值分组PHP数组

基本上,我试图像这样对数组进行分组: 通过使用以下PHP代码: 但是我只得到如下的价值。 我没有为此使用确切的PHP排序。 ...

5 合并具有相同键值的数组

阵列1 阵列2 我想要的是 主键是shoplist_id。 我需要合并数组1和数组2,因为它们具有相同的键和值。 我尝试使用array_merge / array_merge_recursive似乎无法正常工作。 那么,如何合并具有相同键和相同值的数组1 ...

6 合并具有相同键值的数组

我使用php glob函数在子目录中获取图像,但我不知道每个目录中存在多少个文件 目录名称为id ,我想将目录中的所有图像归为一个数组 我需要像这样更改它: ...

7 我如何合并具有相同键值的数组

如何合并如下所示的数组,我想按province_code合并tax_year 原始阵列 我怎么能变成这个 目标阵列 请给我建议。 谢谢(对不起,我无法粘贴我的代码) 语言是PHP 。 这是文本版本https:// pastebin.com/FSnUR1je ...

8 php组数组基于键值相同

我有以下数组 我需要做的是遍历它,找到id_option值匹配的那些并将它们分组为一个新数组,看起来像 其中id_option 1的选项组合在一起 我尝试了以下但没有运气 ...

9 PHP数组总和键值相同

我有一个包含子数组的数组。 我想对键相同的值求和,并将其放在一个列表中。 这是我的数组: 我想要一个像这样的数组: 一些尝试: ...

2018-05-02 09:56:16 4 106   php
10 根据相同的键值对数组结果集进行分组

查询数据库后,我有以下数组 我想要做的是基于相同的release_id值将数组转换为如下所示的内容。 目前,我有以下代码使用foreach循环,以某种方式实现了我想要的相同的东西 它给出以下输出 但是我如何才能使其更有效率和更优化,因为结果剩余部分将很大,如果我有 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM