php - 在数组中分组日期
问题描述
我有一个包含许多日期的数组。这些日期是被动的。如果两者之间的空闲时间超过 8 天,我需要得到与这些日期相反的日期。我必须将这些相反的日期处理为天数、开始日期和结束日期。
示例数组
Array
(
[0] => 17-05-2020
[1] => 18-05-2020
[2] => 19-05-2020
[3] => 20-05-2020
[4] => 28-05-2020
[5] => 29-05-2020
[6] => 30-05-2020
[7] => 02-06-2020
[8] => 03-06-2020
[9] => 10-07-2020
[10] => 10-07-2020
[11] => 11-07-2020
[12] => 12-07-2020
[13] => 13-07-2020
[14] => 20-07-2020
[15] => 21-07-2020
[16] => 25-07-2020
[17] => 26-07-2020
[18] => 27-07-2020
)
我想要的结果
Array
(
[0] => Array
(
[0] => 30-05-2020
[1] => 02-06-2020
[2] => 3
)
[1] => Array
(
[0] => 13-07-2020
[1] => 20-07-2020
[2] => 7
)
[2] => Array
(
[0] => 21-07-2020
[1] => 25-07-2020
[2] => 4
)
)
解决方案
我的理解是你想得到日期之间的差异,如果差异是>= 8
那么你希望这些日期在单独的数组中,并且还有天数
像下面这样:
$finalArray = [];
foreach($array as $key=>$arr){
if(isset($array[$key+1])){
$diff = round((strtotime($array[$key+1]) - strtotime($arr)) / (60 * 60 * 24));
if(($diff < 8) and ($diff > 1)){
$finalArray[] = array(
$arr,
$array[$key+1],
$diff
);
}
}
}
print_r($finalArray);