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