Php Can';不要一次修改一次而没有奇怪的错误

Php Can';不要一次修改一次而没有奇怪的错误,php,datetime,multidimensional-array,Php,Datetime,Multidimensional Array,我有任意给定员工现在从日历中提取到多维数组中的空闲时间,其中每个[I][]都是一对日期,表示空闲时间段的开始时间[I][0]和结束时间[I][1]。我需要把它分成20分钟的间隔,在块的开始和结束时间之间,然后以这种格式返回所有时间。现在我只是不断地重复修改同一个对象,但是为了正确的迭代次数,这让我发疯。。。希望你们能帮忙 我已经尝试了我C++知识库所提供的一切,但是PHP引用了对象,我猜我找不到方法。 $test=array\u chunk($times,2); $i=0; $end_test=

我有任意给定员工现在从日历中提取到多维数组中的空闲时间,其中每个[I][]都是一对日期,表示空闲时间段的开始时间[I][0]和结束时间[I][1]。我需要把它分成20分钟的间隔,在块的开始和结束时间之间,然后以这种格式返回所有时间。现在我只是不断地重复修改同一个对象,但是为了正确的迭代次数,这让我发疯。。。希望你们能帮忙

我已经尝试了我C++知识库所提供的一切,但是PHP引用了对象,我猜我找不到方法。

$test=array\u chunk($times,2);
$i=0;
$end_test=计数($times)/2;
$free_slots=array();
$interval=“+20分钟”;
阵列推送($free_slot,$test[0][0]);

对于($i=0;$i,每次都需要通过内部循环克隆
$test1
。否则,您只是在原地修改它并将引用推送到相同的对象

不过,在分配
$test1
$test2
时,您不需要克隆原始日期。您从不修改
$test2
,因此它不需要是克隆。而且,在进入循环之前,您不需要修改
$test1

for($i=0;$i<$end_test;$i++){
    $test1 = $test[$i][0];
    $test2 = $test[$i][1];
    while($test1<=$test2){
        $test1 = clone $test1;
        $test1->modify($interval);
        array_push($free_slots, $test1);
    }
}

for($i=0;$i这就是对我有用的东西:

//分为起点和终点
数组_推送($times,$last);
$test=array\u chunk($times,2);
$free_slots=array();
$interval=“+20分钟”;
$end_test=计数($times)/2;
//分为“x”分钟间隔
对于($i=0;$imodify($interval);
阵列推送($free\u插槽,$m);
如果($m!=$test[$i][1]){
阵列推送($free\u插槽,$m);
}
}
}

如果您提出了另一个解决方案,您应该将其作为答案发布。
[0][0]="2019-08-14 08:00:00.000000"
[0][1]="2019-08-14 10:00:00.000000"
[1][0]="2019-08-14 11:00:00.000000"
[1][1]="2019-08-14 12:00:00.000000"
[2][0]="2019-08-14 13:00:00.000000"
[2][1]="2019-08-14 16:00:00.000000"
[3][0]="2019-08-14 17:00:00.000000"
[3][1]="2019-08-14 19:00:00.000000"
for($i=0;$i<$end_test;$i++){
    $test1 = $test[$i][0];
    $test2 = $test[$i][1];
    while($test1<=$test2){
        $test1 = clone $test1;
        $test1->modify($interval);
        array_push($free_slots, $test1);
    }
}