Hallo In die Runde.
Ich stell mich gerade irgendwie dämlich an.
Aus der Abfrage einer API für eine Temperaturprognose erhalte ich eine JSON-Antwort (siehe Anhang), die ich schon in der Variable $ergebnisT habe. Nun dachte ich, dass ich mit folgendem Code an die Zeit- und die Temperaturwerte komme, aber das klappt irgendwie nicht. Ich muss zugeben, dass ich in PHP immer noch nicht so richtig fit bin. Ich vermute, dass die entsprechenden Arrays in einer Unterebene sind und ich die deshalb mit dem json_decode nicht sehe. Für sachdienliche Hinweise wäre ich sehr dankbar.
$ValueCount = 192; //2 Tage im Viertelstundenraster
$archiveTemperature = array(); //Array für die Lufttemperatur
......
......
$forecastsT = json_decode($ergebnisT,true);
//Hier dann durch alles parsen
$n=0;
do {
$ts = strtotime($forecastsT["minutely_15"]["time"][$n]);
$temp = floatval($forecastsT["minutely_15"]["temperature_2m"][$n]);
//und ins Array schreiben
$archiveTemperature[] = array(
'TimeStamp' => $ts-172800,
'Value' => $temp
);
$n=$n+1;
} while ($n<$ValueCount);
forecast_Temperature.json (4,8 KB)
Was klappt nicht?
Kommt eine Fehlermeldung?
Stimmen die Werte nicht?
Was meinst du mit klappt nicht?
Wenn ich da ein var_dump($archiveTemperature);
anhänge, dann kommt da ganz sauber dein Array raus:
array(192) {
[0]=>
array(2) {
["TimeStamp"]=>
int(1748188800)
["Value"]=>
float(18.9)
}
[1]=>
array(2) {
["TimeStamp"]=>
int(1748189700)
["Value"]=>
float(18.8)
}
[2]=>
array(2) {
["TimeStamp"]=>
int(1748190600)
["Value"]=>
float(18.7)
}
[3]=>
array(2) {
["TimeStamp"]=>
int(1748191500)
["Value"]=>
float(18.6)
}
...
Das einzige was mir so auffällt; Timestamps sind immer UTC, warum ziehst du 172800 Sekunden ab?
Michael
bei mir ist das Array dann leer.
die 172800 Sekunden ziehe ich ab, weil ich die Werte in eine geloggte Variable schreiben will. Da IPSymcon aber keine Zeiten in der Zukunft zulässt, mappe ich die 2 Tage zurück. Es sind ja Prognosewerte. Wenn ich das Array mit Dummywerten fülle klappt das. Was mich dann aber stört ist, dass bei der Anzeige in einem Diagramm, halt eben die 2 tage zurück gemappte Zeit angezeigt wird. Da wäre es schön, wen ich bei der Anzeige irgendwie die Möglichkeit hätte, die Zeitwerte wieder mit einem 2 Tage Offset um zwei tage nach Vorn zu mappen. Da habe ich aber noch keine Lösung gefunden.
Wie hast du das geprüft?
Michael
Sorry, Fehler von mir. Hatte bei der Anlage des Arrays einen Tippfehler drin. Jetzt geht es. Bleibt nur die Geschichte mir dem Versatz im Archiv.