4

我有一个日期数组,看起来像这样:

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)

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

4

1 回答 1

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
        )

)
于 2013-08-15T12:33:47.957 回答