I am trying to set values of any missing months in my nested array for specific years.
Data:
JavaScript
x
$data = array(
'2019'=>array('January'=>224, 'March'=>66, 'September'=>301),
'2018'=>array('April'=>45, 'August'=>116, 'November'=>38)
);
As you can see in the above array, year 2019 and 2018 have missing months. How can I can add those missing months and set the values to zero? Please advice.
Advertisement
Answer
Use array_replace()
to overlay one array with another.
JavaScript
$months=json_decode('{"January":0,"February":0,"March":0,"April":0,"May":0,"June":0,
"July":0,"August":0,"September":0,"October":0,"November":0,"December":0}',true);
$data = array(
'2019'=>array('January'=>224, 'March'=>66, 'September'=>301),
'2018'=>array('April'=>45, 'August'=>116, 'November'=>38)
);
foreach ($data as $year=>$v)
$data[$year]=array_replace($months,$data[$year]);
print_r ($data);
If there is a key present in data
, then its value is used, otherwise the value from months
is used.