Array Months
array(8) { [0]=> string(2) "05" [1]=> string(2) "09" [2]=> string(2) "08" [3]=> string(2) "07" [4]=> string(2) "05" [5]=> string(2) "07" [6]=> string(2) "06" [7]=> string(2) "07" }
string(41) "["05","09","08","07","05","07","06","07"]"
Array Values of Months
array(8) { [0]=> string(5) "20000" [1]=> string(5) "10000" [2]=> string(5) "10000" [3]=> string(5) "15000" [4]=> string(5) "10000" [5]=> string(5) "50000" [6]=> string(5) "10000" [7]=> string(5) "14000" }
string(65) "["20000","10000","10000","15000","10000","50000","10000","14000"]"
So, I wanted to add the number that falls in the same month
05 => 20000
05 => 10000
06 => 10000
07 => 15000
07 => 50000
07 => 14000
08 => 10000
09 => 10000
Desired Output
string(106) "{"1":0,"2":0,"3":0,"4":0,"5":"30000","6":"10000","7":"79000","8":"10000","9":"10000","10":0,"11":0,"12":0}"
Code:
$mainarr = [];
foreach ($loans3rdChart as $key => $value) {
for ($i=1; $i <=12 ; $i ) {
if(!empty($mainarr[$i])){
//$mainarr[$i] =$value['y'];
}else{
if($i==$value['month_release']){
$mainarr[$i] = $value['amount_granted'];
}else{
$mainarr[$i] = 0;
}
}
}//end loop
}
Output:
string(106) "{"1":0,"2":0,"3":0,"4":0,"5":"20000","6":"10000","7":"15000","8":"10000","9":"10000","10":0,"11":0,"12":0}"
Please help me figure this out. Thank you.
CodePudding user response:
Your problem is that you are not considering that on the 2nd time you arrive at a month that already exists you need to add it to the existing value ... here is an example to get you through with all:
<?php
$months = ["05","09","08","07","05","07","06","07"];
$values = ["20000","10000","10000","15000","10000","50000","10000","14000"];
foreach($months as $key => $month){
if(!isset($newArray[$month])){
$newArray[$month] = $values[$key];
} else {
$newArray[$month] = $newArray[$month] $values[$key];
}
}
for ($i=1; $i <=12 ; $i ) {
if(strlen($i) == 1){
$id = "0$i";
} else {
$id = $i;
}
if(!isset($newArray[$id])){
$newArray[$id] = 0;
}
}
ksort($newArray);
print_r(json_encode($newArray));
Will return:
{"01":0,"02":0,"03":0,"04":0,"05":30000,"06":"10000","07":79000,"08":"10000","09":"10000","10":0,"11":0,"12":0}
Edit -- I have edited my code and added the 0 for the numbers to be 2 figures for each month.
Just want to emphasize there are plenty more ways to do this! :)