首页 > 解决方案 > 创建一个二维数组,该数组根据每个 dateTime 对象之间的时间间隔对一组 dateTime 对象进行分组

问题描述

我必须创建一个程序,从给定的表演者那里获取所有节目,并将他们的节目分组为“访问”,这将被定义为在连续日期发生的一组节目。下面的 dateTime 对象是我为了这篇文章的简洁而拼接的一个更大列表的一个子集。

Array (
        [0] => DateTime Object
            (
                [date] => 2017-04-22 12:45:49.000000
                [timezone_type] => 3
                [timezone] => America/Denver
            )

        [1] => DateTime Object
            (
                [date] => 2017-04-21 12:45:49.000000
                [timezone_type] => 3
                [timezone] => America/Denver
            )
        [2] => DateTime Object
            (
                [date] => 2015-04-18 12:45:49.000000
                [timezone_type] => 3
                [timezone] => America/Denver
            )
       )

我有一个日期时间对象列表,我需要一个算法,它会根据每个日期之间的间隔大小将日期时间对象放入一个二维数组中。如果两个 datetime 对象之间的间隔大于 1 天,则在较大的数组中创建一个数组。如果间隔小于 1 天,则将 datetime 对象添加到当前设置指针的数组中。下面的算法从之前的三个 dateTime 对象创建了 dateTime 间隔多维数组。

    $incrementKey = 0;
foreach ($datesIntervalArray as $d) {
    if ($d->days > 1) {
        $incrementKey++;
    }
    $groupsOfVisits[$incrementKey][] = $d;



Array
(
    [0] => Array
        (
            [0] => DateInterval Object      (1/1/2017)
                (           
                    [days] => 1
                )

            [1] => DateInterval Object      (1/2/2017)
                (
                    [days] => 1   
                )
     [1] => Array
        (
            [0] => DateInterval Object      (2/1/2017)
                (           
                    [days] => 1
                )
 )

所以我的问题是如何获取这些信息并以第二个数组的格式(使用 dateInterval 对象)创建一个数组,但使用来自第一个数组(dateTime)的信息?我一直无法弄清楚如何从 dateInterval 转换回 dateTime。有没有办法做到这一点而不必首先转换为 dateInterval ?我觉得我很亲密,但在这方面花了很多时间。提前致谢!

标签: phparraysdatetimemultidimensional-arraydateinterval

解决方案


推荐阅读