這段代碼將連續日期分組在一起,並理解夏令時。數字
陣列
$dates = array
(
strtotime('2012-10-01'),
strtotime('2012-10-03'),
strtotime('2012-10-04'),
strtotime('2012-10-05'),
strtotime('2012-10-06'),
strtotime('2012-10-07'),
strtotime('2012-10-10'),
strtotime('2012-10-11'),
strtotime('2012-10-12'),
strtotime('2012-10-13'),
strtotime('2012-10-14'),
strtotime('2012-10-15'),
strtotime('2012-10-16'),
strtotime('2012-10-17'),
strtotime('2012-10-18'),
strtotime('2012-10-19'),
strtotime('2012-10-20'),
strtotime('2012-10-23'),
strtotime('2012-10-24'),
strtotime('2012-10-25'),
strtotime('2012-10-26'),
strtotime('2012-10-29'),
strtotime('2012-10-30'),
strtotime('2012-10-31'),
strtotime('2012-11-01'),
strtotime('2012-11-02'),
strtotime('2012-11-04')
);
代碼:
$conseq = array();
$ii = 0;
$max = count($dates);
for($i = 0; $i < count($dates); $i++) {
$conseq[$ii][] = date('Y-m-d',$dates[$i]);
if($i + 1 < $max) {
$dif = $dates[$i + 1] - $dates[$i];
if($dif >= 90000) {
$ii++;
}
}
}
輸出:
array
0 =>
array
0 => string '2012-10-01' (length=10)
1 =>
array
0 => string '2012-10-03' (length=10)
1 => string '2012-10-04' (length=10)
2 => string '2012-10-05' (length=10)
3 => string '2012-10-06' (length=10)
4 => string '2012-10-07' (length=10)
2 =>
array
0 => string '2012-10-10' (length=10)
1 => string '2012-10-11' (length=10)
2 => string '2012-10-12' (length=10)
3 => string '2012-10-13' (length=10)
4 => string '2012-10-14' (length=10)
5 => string '2012-10-15' (length=10)
6 => string '2012-10-16' (length=10)
7 => string '2012-10-17' (length=10)
8 => string '2012-10-18' (length=10)
9 => string '2012-10-19' (length=10)
10 => string '2012-10-20' (length=10)
3 =>
array
0 => string '2012-10-23' (length=10)
1 => string '2012-10-24' (length=10)
2 => string '2012-10-25' (length=10)
3 => string '2012-10-26' (length=10)
4 =>
array
0 => string '2012-10-29' (length=10)
1 => string '2012-10-30' (length=10)
2 => string '2012-10-31' (length=10)
3 => string '2012-11-01' (length=10)
4 => string '2012-11-02' (length=10)
5 =>
array
0 => string '2012-11-04' (length=10)
檢查此問題http://stackoverflow.com/questions/8461543/check-for-consecutive-dates-within-a-set-and-return-as-range – Sibu