我有一个日期数组
$dates = array("2019-04-09","2019-04-17","2019-04-18","2019-04-23","2019-04-24","2019-04-26","2019-04-29","2019-04-30");
我想通过函数传递$ date数组,该函数会将连续的工作日分组在一起以产生以下格式。
$newarray = array(
[0]=>array('start' => '2019-04-09','end' => '2019-04-09'),
[1]=>array('start' => '2019-04-17','end' => '2019-04-24'),
[2]=>array('start' => '2019-04-26','end' => '2019-04-30'),
);
工作日为非周末和非英国银行假日。我已经在另一个阵列中有银行假期了
$bankholidays = array(
[0] => 2018-01-01
[1] => 2018-03-30
[2] => 2018-04-02
[3] => 2018-05-07
[4] => 2018-05-28
[5] => 2018-08-27
[6] => 2018-12-25
[7] => 2018-12-26
[8] => 2019-01-01
[9] => 2019-04-19
[10] => 2019-04-22
[11] => 2019-05-06
[12] => 2019-05-27
[13] => 2019-08-26
[14] => 2019-12-25
[15] => 2019-12-26
[16] => 2020-01-01
[17] => 2020-04-10
[18] => 2020-04-13
[19] => 2020-05-04
[20] => 2020-05-25
[21] => 2020-08-31
[22] => 2020-12-25
[23] => 2020-12-28
)
以下功能为我提供了我需要的格式的日期范围,但未考虑周末和银行假期
function genarray($dates) {
$i=0;
$j=1;
$diff=86400;
$period = $diff;
$nrInterval=0;
$intervals[$nrInterval]['start'] = $dates[$i];
$intervals[$nrInterval]['end'] = $dates[$i];
while($j<count($dates)){
if(strtotime($dates[$j])-strtotime($dates[$i]) == $period){
$intervals[$nrInterval]['end'] = $dates[$j];
$j++;
$period+=$diff;
} else{
$i=$j;
$j++;
$nrInterval++;
$intervals[$nrInterval]['start'] = $dates[$i];
$intervals[$nrInterval]['end'] = $dates[$i];
$period = $diff;
}
}
return $intervals;
}
$dates = array("2019-04-09","2019-04-17","2019-04-18","2019-04-19","2019-04-23","2019-04-24","2019-04-26","2019-04-29","2019-04-30");
$tmp = genarray($dates);
print_r($tmp);
给我
Array
(
[0] => Array
(
[start] => 2019-04-09
[end] => 2019-04-09
)
[1] => Array
(
[start] => 2019-04-17
[end] => 2019-04-19
)
[2] => Array
(
[start] => 2019-04-23
[end] => 2019-04-24
)
[3] => Array
(
[start] => 2019-04-26
[end] => 2019-04-26
)
[4] => Array
(
[start] => 2019-04-29
[end] => 2019-04-30
)
)
有人可以帮忙吗?我只是不知道该怎么去。