将一组日期分成连续的日期数组

时间:2013-08-14 22:31:27

标签: php arrays date

我有一系列日期看起来像这样:

Array (
  [0] => 08/20/2013
  [1] => 08/21/2013
  [2] => 08/22/2013
  [3] => 08/23/2013
  [4] => 08/26/2013
)

它总是会有所不同,具体取决于用户选择的日期,例如,让我们使用这个。

我需要做的是找出一种将数组分成连续日期和非连续日期的方法。

所以最后我应该有:

Array (
  [0] => 08/20/2013
  [1] => 08/21/2013
  [2] => 08/22/2013
  [3] => 08/23/2013
)

Array ([4] => 08/26/2013)

我应该指定它不仅仅是两个数组。非连续日期每个都有自己的数组,连续日期各自都在自己的数组中。

1 个答案:

答案 0 :(得分:3)

使用$arr代表您的数组:

usort($arr, function ($a, $b){
    return strtotime($a) - strtotime($b);
});
$out = array();
$last = 0;
$dex = -1;
foreach ($arr as $key => $value){
    $current = strtotime($value);
    if ($current - $last > 86400) $dex++;
    $out[$dex][] = $value;
    $last = $current;
}
print_r($out);

输出:

Array
(
    [0] => Array
        (
            [0] => 08/20/2013
            [1] => 08/21/2013
            [2] => 08/22/2013
            [3] => 08/23/2013
        )

    [1] => Array
        (
            [0] => 08/26/2013
        )

)