我正在尝试什么
我正在使用 PHP 制作一个事件管理系统。在这种情况下,该事件可能会重复几天。在事件重复的情况下,数组将包含重复的结束日期,即;事件应该重复的结束日期。
array[] = array([0]=>array(
[name]=>test1
[start]=>2013-06-23 11:00
[end]=>2013-06-23 13:00
[repeat]=>true
[repeat-end]=>2013-06-25)
[1]=>array(
[name]=>test2
[start]=>2013-06-21 14:00
[end]=>2013-06-21 16:00
[repeat]=>false))
我需要什么
如果事件重复,则数组必须填充所有数据,直到重复结束日期和相应的开始和结束。在上述情况下,事件持续时间显示为start和end,重复结束日期显示为repeat-end。在此数组应填充如下所示:
array[] = array([0]=>array(
[name]=>test1
[start]=>2013-06-23 11:00
[end]=>2013-06-23 13:00
[repeat]=>true
[repeat-end]=>2013-06-25)
[1]=>array(
[name]=>test2
[start]=>2013-06-21 14:00
[end]=>2013-06-21 16:00
[repeat]=>false
[2]=>array(
[name]=>test1
[start]=>2013-06-24 11:00
[end]=>2013-06-24 13:00
[repeat]=>true
[repeat-end]=>2013-06-25)
[3]=>array(
[name]=>test1
[start]=>2013-06-25 11:00
[end]=>2013-06-25 13:00
[repeat]=>true
[repeat-end]=>2013-06-25)
))
我试过的
我在这里尝试使用 php DatePeriod 功能
foreach ($array as $result){
if($result['repeat == true']){
$period = new DatePeriod(
new DateTime($result['start']),
new DateInterval('P1D'),
new DateTime($result['repeat-end']), DatePeriod::EXCLUDE_START_DATE);
$period = iterator_to_array($period);
}
}
使用这个开始和重复结束之间的所有日期,其中 obtianed 并且我将每个日期的值插入到数组中。但是我无法获得数组中的最后一个开始日期,并且当开始日期和结束日期 [not repeat-end] 不同时,结束日期变得复杂。