Moin!
Ich frage mich gerade, warum Du da so kompliziert heran gehst?
War schon spät ...
$jahrmin und -max benötigen wir eigentlich nicht, da bereits durch die Query vorgegeben.
Bezüglich des Jahrs war nichts definiert. Dass das Jahr aber im JSON auftaucht ist eigentlich ein Merkmal dafür, dass es variabel ist.
Oder habe ich was übersehen oder nicht bedacht?
Möglicherweise. Deiner ersten Darstellungen nach begannen die Monate mit 1 (=Januar) zu zählen. Dann musst Du natürlich anpassen:
<?php
# Konfiguration
$mOffset=1 # 1, wenn Monate in der DB mit 1 = Januar gezählt werden
# 0, wenn Monate in der DB mit 0 = Januar gezählt werden
# Simulation Datenbank:
$arr[1]=130;
#$arr[2]=0;
$arr[3]=50;
#$arr[4]=0;
$arr[5]=160;
$arr[6]=150;
$arr[7]=130;
$arr[8]=120;
#$arr[9]=0;
$arr[10]=40;
$arr[11]=160;
$arr[12]=350;
$jahr = 2015;
for ($Monat=0; $Monat < 12; $Monat++) {
# < 12 statt <= 11 sorgt für mehr Klarheit und spart einen Vergleich ...
if (empty($arr[$Monat + $mOffset])) {
$innenarray[$Monat] = 0;
} else {
$innenarray[$Monat] = $arr[$Monat + $mOffset];
}
}
$data = array($jahr => $innenarray);
echo json_encode($data);
Jörg Reinholz