【问题标题】:Merge element if dates overlap如果日期重叠,则合并元素
【发布时间】:2016-07-29 15:58:32
【问题描述】:

我想合并一个数组的一些元素: - 如果日期重叠,则合并元素:

例如:

数组:

id : 1 开始日期:2016 年 5 月 5 日 结束日期:2016 年 10 月 5 日 数量:5

id : 2 开始日期:2016 年 12 月 5 日 结束日期:2016 年 12 月 5 日 数量:20

id : 3 开始日期:2016 年 9 月 5 日 结束日期:2016 年 5 月 15 日 数量:50

id : 4 开始日期:2016 年 5 月 5 日 结束日期:2016 年 10 月 5 日 数量:100

id : 5 开始日期:2016 年 1 月 8 日 结束日期:2016 年 1 月 8 日 数量:10

第一次解析:

id : 1 开始日期:2016 年 5 月 5 日 结束日期:2016 年 5 月 15 日 数量:155

d : 2 开始日期:2016 年 12 月 5 日 结束日期:2016 年 12 月 5 日 数量:20

id : 5 开始日期:2016 年 1 月 8 日 结束日期:2016 年 1 月 8 日 数量:10

第二次解析:

id : 1 开始日期:2016 年 5 月 5 日 结束日期:15/05/2016 数量:175

id : 5 开始日期:2016 年 1 月 8 日 结束日期:2016 年 1 月 8 日 数量:10

我希望我很清楚。 实际上,为了做到这一点,我需要一个while循环和2个foreach,但它太贵了。 在 php 中执行此操作的最佳方法是什么?

谢谢

【问题讨论】:

    标签: php


    【解决方案1】:

    您可以在日期中取每个月中最小的一天和最高的一天,然后必须合并所有介于最小和最高之间的日期。你可以结束一个循环

    【讨论】:

    • 您好,不,它不起作用,例如 id 1 => start_date : 05/05/2016 结束日期 05/05/2015 id 2 => start_date : 15/05/2016 结束日期 25 /05/2015 id 3 => start_date : 08/05/2016 结束日期 08/05/2015 我无法合并,因为没有日期重叠
    • 对不起,也许我误解了这个问题。您可以先选择开始日期和结束日期之间差异最大的日期,然后将所有在其间隔内具有结束日期的日期合并。然后重复相同的操作步骤,但没有以前的日期
    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 2022-01-18
    • 1970-01-01
    • 2011-02-03
    • 2021-09-21
    • 1970-01-01
    • 2021-01-25
    • 1970-01-01
    相关资源
    最近更新 更多