2 回答
TA贡献1806条经验 获得超5个赞
这对我有用:
//split into start and end points
array_push($times, $last);
$test = array_chunk($times, 2);
$free_slots = array();
$interval = '+20 minutes';
$end_test = count($times)/2;
//split into 'x' min intervals
for($i=0; $i<$end_test; $i++){
array_push($free_slots, $test[$i][0]);
$mod = clone $test[$i][0];
while($mod < $test[$i][1]){
$m = clone $mod->modify($interval);
array_push($free_slots, $m);
if($m != $test[$i][1]){
array_push($free_slots, $m);
}
}
}
TA贡献1824条经验 获得超6个赞
您$test1每次都需要通过内部循环进行克隆。否则,您只是在适当的位置修改它并推送对相同对象的引用。
但是,在分配$test1and时不需要克隆原始日期$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);
}
}
- 2 回答
- 0 关注
- 134 浏览
添加回答
举报