Php 创建一个数组,该数组根据DateTime interval对象的大小在其内部创建较小的变量数组

Php 创建一个数组,该数组根据DateTime interval对象的大小在其内部创建较小的变量数组,php,Php,这有点基本,但却是我的第一个PHP项目之一,我被卡住了。我需要创建一些东西,它将遍历一系列DateTime对象,并根据每个对象之间的时间间隔将它们分组,最终目标是平均与这些日期组相关的数据(只关注如何在本文中对数据进行分组)。如果DateTime对象相隔超过1天,则它们需要位于单独的子组中,但仍然是较大日期列表的一部分 我已经能够从DateTime对象创建DateInterval对象。下面是从较大的日期列表中提取的两个DateTime对象的示例,以及从这两个对象之间的时间量生成的相应DateIn

这有点基本,但却是我的第一个PHP项目之一,我被卡住了。我需要创建一些东西,它将遍历一系列DateTime对象,并根据每个对象之间的时间间隔将它们分组,最终目标是平均与这些日期组相关的数据(只关注如何在本文中对数据进行分组)。如果DateTime对象相隔超过1天,则它们需要位于单独的子组中,但仍然是较大日期列表的一部分

我已经能够从DateTime对象创建DateInterval对象。下面是从较大的日期列表中提取的两个DateTime对象的示例,以及从这两个对象之间的时间量生成的相应DateInterval`

[4] => DateTime Object
    (
        [date] => 2017-04-21 12:50:53.000000
        [timezone_type] => 3
        [timezone] => America/Denver
    )

[5] => DateTime Object
    (
        [date] => 2015-04-18 12:50:53.000000
        [timezone_type] => 3
        [timezone] => America/Denver
    )


    `[9] => DateInterval Object
    (
        [y] => 2
        [m] => 0
        [d] => 3
        [h] => 0
        [i] => 0
        [s] => 0
        [weekday] => 0
        [weekday_behavior] => 0
        [first_last_day_of] => 0
        [invert] => 1
        [days] => 734
        [special_type] => 0
        [special_amount] => 0
        [have_weekday_relative] => 0
        [have_special_relative] => 0
    )`
有没有一种方法可以创建某种数组,将日期对象的子组保存在它们自己的数组中,并根据它们的间隔大小进行排序?我在下面举例说明了我所想的结构

Array [
       Array [
                [date1],
                [date2],
                [date3]
             ]
       Array [ 
                [date4],
                [date5],
             ]
       Array [
                [date6]
             ]
       ]

首先,对日期数组进行排序(如果尚未排序)

然后在迭代数组时跟踪上一项。如果差异间隔中的天数超过阈值,则增加用于在结果数组中定义组的键

$i = 0;
$previous = null;

foreach ($dates as $date) {
    if ($previous && $date->diff($previous)->days > 1) {
        $i++;
    }
    $groups[$i][] = $date;
    $previous = $date;
}

这是解决我问题的代码,它是对@Don'tPanic的代码稍加修改而成的

$incrementKey = 0;
foreach ($datesIntervalArray as $d) {

    if ($d->days > 1) {
        $incrementKey++;
    }

    $groupsOfVisits[$incrementKey][] = $d;

`

我是根据我对这个问题的初步理解来回答的,但我担心这可能是不完整的,因为我不确定你所说的“根据间隔大小排序”是什么意思。请您提供一个带有实际日期的示例输出,以澄清这一点?
$incrementKey = 0;
foreach ($datesIntervalArray as $d) {

    if ($d->days > 1) {
        $incrementKey++;
    }

    $groupsOfVisits[$incrementKey][] = $d;

`