I have a mysql query output that give the number of loads for each day of the month.
Array
(
[0] => Array
(
[day] => 01
[Loads] => 9
)
[1] => Array
(
[day] => 02
[Loads] => 7
)
[2] => Array
(
[day] => 03
[Loads] => 12
)
[3] => Array
(
[day] => 04
[Loads] => 5
)
[4] => Array
(
[day] => 06
[Loads] => 1
)
[5] => Array
(
[day] => 07
[Loads] => 4
)
[6] => Array
(
[day] => 08
[Loads] => 9
)
[7] => Array
(
[day] => 09
[Loads] => 19
)
[8] => Array
(
[day] => 10
[Loads] => 11
)
[9] => Array
(
[day] => 11
[Loads] => 5
)
[10] => Array
(
[day] => 12
[Loads] => 2
)
[11] => Array
(
[day] => 14
[Loads] => 7
)
[12] => Array
(
[day] => 15
[Loads] => 9
)
[13] => Array
(
[day] => 16
[Loads] => 11
)
[14] => Array
(
[day] => 17
[Loads] => 9
)
[15] => Array
(
[day] => 18
[Loads] => 6
)
[16] => Array
(
[day] => 19
[Loads] => 3
)
)
You can see from the output not all days have loads. Day 5 and Day 13 are missing. I want to loop and create a new array and if there are no loads for that day add the day with zero loads.
I have been struggling with this. It seems that it would be simple but I can't seem to get it. Can someone here please help me?
I am extremely thankful.
Here is what I have so far:
$dayCountArr = [];
for ($i = 1; $i <= 31; $i++) {
$tempArr = [];
foreach ($dayO as $d) {
if ($d['day'] == $i) {
$day = $d['day'];
$loads = $d['Loads'];
} else {
$day = $i;
$loads = 0;
}
$dayCountArr[] = [$day, $loads];
}
}
Here is query. It returns the above output
SELECT
DATE_FORMAT(r.ship_date, '%d') AS day,
COUNT(DISTINCT(r.order_number)) AS 'Loads'
FROM table r
WHERE YEAR(r.ship_date) = '2022'
&& MONTH(r.ship_date) = 3
&& r.team = 'TEAM-2'
&& (r.order_status = 'Progress' || r.order_status = 'Delivered')
GROUP BY DATE_FORMAT(r.ship_date, '%d')