php - 合并/合并日期范围的算法

标签 php algorithm merge date-range

我正在尝试找到将日期范围合并到一个数据库记录(数组元素)中的最佳方法。

这是我的数据:

  Array
(
    [0] => Array
        (
            [id] => 18298
            [start_date] => 2011-07-09
            [end_date] => 2011-10-01
        )

    [1] => Array
        (
            [id] => 18297
            [start_date] => 2011-06-01
            [end_date] => 2011-06-30
        )

    [2] => Array
        (
            [id] => 17113
            [start_date] => 2011-03-31
            [end_date] => 2011-05-31
        )

    [3] => Array
        (
            [id] => 20555
            [start_date] => 2011-01-03
            [end_date] => 2011-03-31
        )
)

在我们组合它们之后,数组(或数据库)应该是这样的:

Array
(
    [0] => Array
        (
            [merged_ids] => 18298
            [start_date] => 2011-07-09
            [end_date] => 2011-10-01
        )

    [1] => Array
        (
            [merged_ids] => 18297, 17113, 20555
            [start_date] => 2011-01-03
            [end_date] => 2011-06-30
        )
)

是否有任何算法可以遍历所有元素/范围并将它们组合起来?哪种方式更好/更容易 - 通过数据库 (MYSQL) 或编码 (PHP)?

非常感谢任何建议。

谢谢!

更新:抱歉,我没有提供足够的信息:我们应该合并任何连续和重叠的日期范围。

最佳答案

按开始日期排序。

然后遍历并检查下一个项目的开始日期是在当前项目的结束日期之前还是之后。如果是,则将下一个合并到当前一个。然后继续。

关于php - 合并/合并日期范围的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4972552/

相关文章:

PHP 函数不从外部文件打印

php - 存在关系时如何将排名编号分配给数组

python - 为什么这个 while 循环会结束? node5 不是 NoneType。 (遍历链表)

python-3.x - 如何将列内的值合并到 Pandas 中以逗号分隔的单行中?

php - 如何防止 PHP 脚本同时运行?

php - M2ePro frensh 安装上的 Pdo 查询异常

c++ - 从一组给定的数字中求解所有可能的表达式

python - Python 中点画派绘画的随机化算法

java - 如何从一个单元格检查所有可到达的单元格

android - 何时将分支 merge 到主分支