Php 创建一个二维数组,该数组根据每个dateTime对象之间的时间间隔对dateTime对象集进行分组
我必须创建一个程序,将给定表演者的所有节目都纳入“访问”中,这将被定义为连续日期的一组节目。下面的dateTime对象是一个更大列表的子集,为了本文的简洁,我拼接了这个列表Php 创建一个二维数组,该数组根据每个dateTime对象之间的时间间隔对dateTime对象集进行分组,php,arrays,datetime,multidimensional-array,dateinterval,Php,Arrays,Datetime,Multidimensional Array,Dateinterval,我必须创建一个程序,将给定表演者的所有节目都纳入“访问”中,这将被定义为连续日期的一组节目。下面的dateTime对象是一个更大列表的子集,为了本文的简洁,我拼接了这个列表 Array ( [0] => DateTime Object ( [date] => 2017-04-22 12:45:49.000000 [timezone_type] => 3
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对象列表,需要一个算法,根据每个日期之间的间隔大小将datetime对象放入二维数组。如果两个datetime对象之间的间隔大于1天,则在较大的数组中创建一个数组。如果间隔小于1天,则将datetime对象添加到当前设置指针的数组中。下面的算法从前面的三个dateTime对象创建了dateTime interval多维数组
$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?我觉得我已经很接近了,但在这件事上花了很长时间。提前谢谢 我想前几天我给你的关于这个问题的答案已经进行了分组?我错过什么了吗?好吧,哇,真管用!我无法让您的代码正常工作,因为我以为您在使用foreach循环dateInterval对象,但实际上您在循环dateTime对象。谢谢你,你是救命恩人!啊,我明白了。这是有道理的。不客气!