Verwendung von PHP für den Zugriff auf Objekte mit ungültigen oder numerischen Eigenschaftsnamen
Beim Versuch, die Funktion json_decode() in PHP zum Parsen von JSON-Daten zu verwenden , können beim Zugriff auf Eigenschaften mit Namen, die ganze Zahlen sind, Schwierigkeiten auftreten oder gültige Namenskonventionen für Variablen nicht eingehalten werden. Dieses Verhalten ist auf die inhärenten Einschränkungen von PHP beim Umgang mit Objekten mit solchen Eigenschaften zurückzuführen.
Einschränkungen und Macken
Lösungen
Lösung Nr. 1: Manuelle Typumwandlung
Wandeln Sie das Objekt manuell in ein Array um, um mit ungültig auf Eigenschaften zuzugreifen Namen:
$a = array('123' => '123', '123foo' => '123foo'); $o = (object) $a; $a = (array) $o; echo $a['123']; // OK!
Lösung Nr. 2: Nukleare Option
Verwenden Sie eine rekursive Funktion, um Objekte in Arrays umzuwandeln:
function recursive_cast_to_array($o) { $a = (array) $o; foreach ($a as &$value) { if (is_object($value)) { $value = recursive_cast_to_array($value); } } return $a; } $arr = recursive_cast_to_array($myVar); $value = $arr['highlighting']['448364']['Data']['0'];
Lösung #3: JSON-Funktionen
Nutzen Sie die integrierte JSON-Funktionen für die rekursive Konvertierung in ein Array:
$arr = json_decode(json_encode($myVar), true); $value = $arr['highlighting']['448364']['Data']['0'];
Es ist wichtig, die Nachteile jeder Lösung zu berücksichtigen, bevor Sie die Lösung auswählen, die Ihren Anforderungen am besten entspricht. Lösung Nr. 2 und Nr. 3 führen beispielsweise unnötige Array-Konvertierungen durch, während Lösung Nr. 3 zusätzlich erfordert, dass String-Eigenschaften in UTF-8 codiert werden.
Das obige ist der detaillierte Inhalt vonWie kann ich mit „json_decode()' auf Objekte mit ungültigen oder numerischen Eigenschaftsnamen in PHP zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!