有一个不考虑时间的日期周期数组(为清楚起见,我将日期设置为字符串,但实际上是时间戳):
$items = [
['fromDate' => '2016-01-01', 'toDate' => '2016-01-12'],
['fromDate' => '2016-02-02', 'toDate' => '2016-02-12'],
['fromDate' => '2016-03-01', 'toDate' => '2016-03-01'],
['fromDate' => '2016-01-05', 'toDate' => '2016-01-16'],
// ...
];
问题:如何将 $items 转换为合并日期冲突?例如,有一个句点01.01.2016 — 10.01.2016and 05.01.2016 — 12.01.2016,那么我们应该得到一个而不是两个元素 - 01.01.2016 — 12.01.2016。
另一个例子:01.03.2017 — 04.03.2017和05.03.2017 — 05.03.2017在01.03.2017 — 05.03.2017.
合并后,新范围也可以与其他元素合并。在输出中,我们应该得到相同的 $items 数组,只有合并的碰撞(如果有的话)。
像这样的东西
如果你根本不计算,只是按月排序,选择 min-max,那么像这样:
在出口处
关于对话中阐明的条件,我正在更新帖子,现在无论月份如何,它都会被吸收,整个日期范围都被考虑在内。
谢谢大家,谢谢你们,结果是我自己: