【发布时间】:2020-10-10 18:42:10
【问题描述】:
我有这个数组
Array
(
[0] => Array
(
[date] => 2020-10-07 10:49:48
[content] => 1
)
[1] => Array
(
[date] => 2020-10-08 13:49:48
[content] => 2
)
[2] => Array
(
[date] => 2020-10-08 13:50:03
[content] => 3
)
)
我想得到:
Array
(
[0] => Array
(
[date] => 2020-10-07 10:49:48
[content] => 1
)
[1] => Array
(
[date] => 2020-10-08 13:50:03
[content] => 2, 3
)
)
如您所见,如果元素之间的日期小于小时(例如),则两个元素的内容应与较大的日期值分组。我只是不明白如何正确地做到这一点
我知道了,但我不知道为什么我在数组中有额外的元素
foreach ($result as $key => $value) {
foreach ($result as $key2 => $value2) {
if (abs(strtotime($value['date_added']) - strtotime($value2['date_added'])) <= 3600 && $key != $key2) {
$result[$key]['content'] = $value['content'] . ',' . $value2['content'];
unset($result[$key2]);
}
}
$merged_array[] = $result[$key];
}
【问题讨论】:
-
你想说
date] => 2020-10-07 10:49:48 [content] => 1, 2 -
1和2元素相差1分钟,应该分组
-
好吧抱歉,但是你重新组合 [content] => 2, 3,3 在哪里? [日期] => 2020-10-08 13:49:48 在哪里?
-
3 元素当然应该被移除并加入到 2 中。
-
我们需要按顺序还是按任何顺序检查。或者如果第一条记录是
7:00,第二条记录是7:50,第三条记录是8:30,会发生什么情况。这些应该合并吗?