701 Stimmen

Objekt vom Typ stdClass kann nicht als Array verwendet werden?

Ich erhalte einen seltsamen Fehler, wenn ich json_decode() . Es dekodiert die Daten korrekt (ich sah es mit print_r ), aber wenn ich versuche, auf die Informationen innerhalb des Arrays zuzugreifen, erhalte ich:

Fatal error: Cannot use object of type stdClass as array in
C:\Users\Dail\software\abs.php on line 108

Ich habe nur versucht, es zu tun: $result['context'] donde $result hat die Daten, die von json_decode()

Wie kann ich Werte innerhalb dieses Arrays lesen?

1039voto

Jon Punkte 411383

Verwenden Sie den zweiten Parameter von json_decode damit es ein Array zurückgibt:

$result = json_decode($data, true);

270voto

svens Punkte 10900

Die Funktion json_decode() gibt standardmäßig ein Objekt zurück.

Sie können auf die Daten wie folgt zugreifen:

var_dump($result->context);

Wenn Sie Bezeichner haben wie from-date (der Bindestrich würde bei der obigen Methode einen PHP-Fehler verursachen) müssen Sie schreiben:

var_dump($result->{'from-date'});

Wenn Sie ein Array wollen, können Sie so vorgehen:

$result = json_decode($json, true);

Oder das Objekt in ein Array umwandeln:

$result = (array) json_decode($json);

200voto

JiNexus Punkte 2616

Sie müssen den Zugang über -> da es sich um ein Objekt handelt.

Ändern Sie Ihren Code von:

$result['context'];

An:

$result->context;

111voto

Sander Marechal Punkte 22568

使用方法 true als zweiten Parameter für json_decode . Dies dekodiert den json in ein assoziatives Array anstelle von stdObject Instanzen:

$my_array = json_decode($my_json, true);

Ver die Dokumentation für weitere Einzelheiten.

98voto

Alexey Lysenko Punkte 1790

Habe heute das gleiche Problem und habe es so gelöst:

Wenn Sie anrufen json_decode($somestring) erhalten Sie ein Objekt, auf das Sie wie folgt zugreifen müssen $object->key aber wenn Sie anrufen json_decode($somestring, true) erhalten Sie ein Wörterbuch und können darauf zugreifen wie $array['key']

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X