PHP array problem, help!
There is such an array:
$array = Array (
0 =
Array (
' Day ' = ' 2014-3-11 ',
' Count ' = 4,
' Day_0 ' = 3,
' Day_1 ' = 1,
),
1 =
Array (
' Day ' = ' 2014-3-7 ',
' Count ' = 2,
' Day_0 ' = 1,
),
2 =
Array (
' Day ' = ' 2014-3-6 ',
' Count ' = 4,
' Day_4 ' = 1,
' Day_5 ' = 1,
),
3 =
Array (
' Day ' = ' 2014-3-10 ',
' Count ' = 10,
' Day_0 ' = 7,
' Day_1 ' = 2,
' Day_2 ' = 1,
),
);
The date interval is not fixed, here is an example of 2014-3-6 to 2014-3-11, the middle interval of five days, want to pass on the date of sorting and interval of days, get the following array:
Add:
March 6 and March 11 difference 5 days, so March 6 there are day_1, day_2, Day_3, Day_4, day_5
March 7 and March 11 difference 4 days, so March 7 there are day_1, day_2, Day_3, Day_4
March 8 and March 11 difference 3 days, so March 8 there are day_1, day_2, Day_3
March 9 and March 11 difference 2 days, so March 9 There are day_1, day_2
March 10 and March 11 are 1 days apart, so there are day_1 on March 10.
March 11 and March 11 difference 0 days, so no day_ ...
...... And so on, a triangle-like array is drawn.
Please help us!!! Thank!
------Solution--------------------
foreach ($array as $v) {
$days []=date ("Ymd", Strtotime ($v [' Day ']);
$ar [Date ("Ymd", Strtotime ($v [' Day]))]= $v;
}
$arr = Range (min ($days), Max ($days));
$max = max ($arr);
foreach ($arr as $v) {
$d = $max-$v;
if (Isset ($ar [$v])) {
$TT [$v] [' Day ']= $ar [$v] [' Day '];
$TT [$v] [' Count ']= $ar [$v] [' count '];
for ($i =1; $i <= $d; $i + +) $tt [$v] [' Day_ '. $i]= (int) $ar [$v] [' Day_ '. $i];
}else{
$TT [$v] [' Day ']=date ("Y-m-j", Strtotime ($v));
$TT [$v] [' count ']=0;
for ($i =1; $i <= $d; $i + +) $tt [$v] [' Day_ '. $i]=0;
}
}
Print_r (Array_values ($TT));