Array and string offset access syntax with curly braces is deprecated

Hallo Leute,

bei der neuen PHP-Version führt folgender Code(-Ausschnitt) zu der Fehlermeldung:
Array and string offset access syntax with curly braces is deprecated…

                             $data = json_decode($Output[3]);
                                       If (isset($data->{'9019'})) {
						$ResultArray[9019] = $data->{'9019'};
					}
					If (isset($data->{'3311'})) {
						$StateArray = $data->{'3311'}{'0'};
						foreach ($StateArray as $Key => $State) {
							$ResultArray[$Key] = $State;
						}
					}
					elseif (isset($data->{'3300'})) {
						$StateArray = $data->{'3300'}{'0'};
						foreach ($StateArray as $Key => $State) {
							$ResultArray[$Key] = $State;
						}
					}
					elseif (isset($data->{'3312'})) {
						$StateArray = $data->{'3312'}{'0'};
						foreach ($StateArray as $Key => $State) {
							$ResultArray[$Key] = $State;
						}
					}
					elseif (isset($data->{'15015'})) {
						$StateArray = $data->{'15015'}{'0'};
						foreach ($StateArray as $Key => $State) {
							$ResultArray[$Key] = $State;
						}
					}

Nach meiner Google-Recherche soll man einfach die geschwungenen Klammern durch die eckigen ersetzen.
Irgendetwas muss dabei aber übersehen haben, den dieses führt bei mir dann zu einem Syntax-Fehler.
Wo liegt mein Fehler?

Joachim

Zeig doch bitte das Script was den Syntax Fehler bringt und auch einen JSON-String damit man überhaupt versteht wie die Daten ursprüngliche aufgebaut sind.
Michael

Hallo Michael,

mein Gedankengang: der Fehler konnte ja erst einmal nichts mit den ankommenden Daten selbst zu tun haben, weil er ja schon beim Laden des Moduls auftrat. Ich habe mir die Funktion dann mal in die Console geholt.
Herausgekommen ist jetzt dieser Syntax der dann offenbar mit allen PHP-Version funktioniert:

$data = json_decode($Output[3], true);
            print_r($data);
            If (isset($data[9019])) {
                $ResultArray[9019] = $data[9019];
            }
            
            If (isset($data[3311])) {
                $StateArray = $data[3311][0];
                    foreach ($StateArray as $Key => $State) {
                        $ResultArray[$Key] = $State;
                    }
            }
            elseif (isset($data[3300])) {
                $StateArray = $data[3300][0];
                    foreach ($StateArray as $Key => $State) {
                        $ResultArray[$Key] = $State;
                    }
            }
            elseif (isset($data[3312])) {
                $StateArray = $data[3312][0];
                    foreach ($StateArray as $Key => $State) {
                        $ResultArray[$Key] = $State;
                    }
            }
            elseif (isset($data[15015])) {
                $StateArray = $data[15015][0];
                    foreach ($StateArray as $Key => $State) {
                        $ResultArray[$Key] = $State;
                    }
            }

Vielen Dank für den Tipp!

Joachim

Deswegen meine Frage nach den Daten, weil das hier ist ja eher ein Zugriff auf ein Objekt mit Namen 9019: $data->{‚9019‘}
Die Fehlermeldung, sofern sie sich halt auf diese Zeile bezog, sagt aber Array oder String.
Wenn es schon immer ein Array war, dann wäre schon immer $data[9019] korrekt gewesen.
Wäre es aber im json wirklich ein Objekt mit Namen 9019 gewesen, hättest du alles richtig gemacht und die Fehlermeldung führt einen auf die falsche Fährte.
Michael