Currently I have this working code that will replace value from old multidimensional array with new value taken from db. Firstly I declare array for 12 month. Code below:
$base = Array(
Array
(
"month" => '2010-01',
"KFC" => '0',
"PZH" => '0',
"SUB" => '0'
),
Array
(
"month" => '2010-02',
"KFC" => '0',
"PZH" => '0',
"SUB" => '0'
),
Array
(
"month" => '2010-03',
"KFC" => '0',
"PZH" => '0',
"SUB" => '0'
),
Array
(
"month" => '2010-04',
"KFC" => '0',
"PZH" => '0',
"SUB" => '0'
),
Array
(
"month" => '2010-05',
"KFC" => '0',
"PZH" => '0',
"SUB" => '0'
),
Array
(
"month" => '2010-06',
"KFC" => '0',
"PZH" => '0',
"SUB" => '0'
),
Array
(
"month" => '2010-07',
"KFC" => '0',
"PZH" => '0',
"SUB" => '0'
),
Array
(
"month" => '2010-08',
"KFC" => '0',
"PZH" => '0',
"SUB" => '0'
),
Array
(
"month" => '2010-09',
"KFC" => '0',
"PZH" => '0',
"SUB" => '0'
),
Array
(
"month" => '2010-10',
"KFC" => '0',
"PZH" => '0',
"SUB" => '0'
),
Array
(
"month" => '2010-11',
"KFC" => '0',
"PZH" => '0',
"SUB" => '0'
),
Array
(
"month" => '2010-12',
"KFC" => '0',
"PZH" => '0',
"SUB" => '0'
)
);
$result = mysqli_query($con, "SELECT brand,
DATE_FORMAT( date_time, '%Y' ) AS 'year',
DATE_FORMAT( date_time, '%m' ) AS 'month',
SUM(brand='PZH') AS PZH,
SUM(brand='KFC') AS KFC,
SUM(brand='SUB') AS SUB
FROM scan_report WHERE DATE_FORMAT( date_time, '%Y' ) =2010 AND id = ".$_SESSION['userinfo']['id']."
GROUP BY DATE_FORMAT( date_time, '%Y%m' )") or die(mysqli_error($con));
$num_rows = 1;
while ($row = mysqli_fetch_array($result)) {
foreach($base as &$value) {
echo $num_rows;
if ($value['month'] == $row['year'].'-'.$row['month']){
$value['KFC'] = $row['KFC'];
$value['PZH'] = $row['PZH'];
$value['SUB'] = $row['SUB'];
}
}
$num_rows++;
}
because the multidimensional array, the for each loop for 12 times. During echo there were 60 loop for 5 matched record when query from db. Is there any elegant solution than what I'm currently doing? Any idea to reduce loop?