首页 > 解决方案 > 在数组中分组日期

问题描述

我有一个包含许多日期的数组。这些日期是被动的。如果两者之间的空闲时间超过 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
        )

)

标签: phparraysdate

解决方案


我的理解是你想得到日期之间的差异,如果差异是>= 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);

输出:https ://3v4l.org/QBYYR


推荐阅读