Moin!
<?php
# Simulation Datenbank:
$ar[1]=1;
$ar[2]=2;
$ar[3]=2;
$ar[4]=1;
$ar[5]=9;
#$ar[6]=0;
$ar[7]=3;
#$ar[8]=0;
#$ar[9]=0;
$ar[10]=4;
$ar[11]=3;
#$ar[12]=0;
$a[2015]=$ar;
$Jahr_min = 2015;
$Jahr_max = 2015;
# Auffüllen der Monate
for ( $Jahr=$Jahr_min; $Jahr<=$Jahr_max;$Jahr++ ) {
#für jeden Monat:
for ($Monat=1; $Monat <= 12; $Monat++) {
if ( empty( $ar[$Monat])) { $ar[$Monat] = 0; }
$a[$Jahr][$Monat-1]=$ar[$Monat];
}
}
#Erzeugen des JSON-Strings:
echo json_encode($a, JSON_NUMERIC_CHECK | JSON_PRETTY_PRINT);
echo "\n";
#Erzeugen des JSON-Strings - manuell:
$Jahr=2015;
#für jeden Monat:
$s = "{\n\"" . $Jahr . '":[';
for ($Monat=0; $Monat < 12; $Monat++) {
$s .= $a[$Jahr][$Monat];
if ( 11 != $Monat ) {
$s .= ',';
}
}
$s .= "]\n}";
echo $s;
echo "\n";
Man kann sich, wie Cheatah vor Jahren hier schon einmal anmerkte, auf die Reihenfolge der Elemente eines Arrays nicht wirklich verlassen. (Auf die Indizes aber schon...) Der mit json_encode erzeugte String sieht zwar optisch nicht so aus wie Dein JSON:
{
"2015": {
"1": 1,
"2": 2,
"3": 2,
"4": 1,
"5": 9,
"7": 3,
"10": 4,
"11": 3,
"6": 0,
"8": 0,
"9": 0,
"12": 0
}
}
hat aber praktisch den gleichen Inhalt. Ansonsten kann man manuell einen String basteln...
{
"2015":[1,2,2,1,9,0,3,0,0,4,3,0]
}
Jörg Reinholz