Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich mit „json_decode()' auf Objekte mit ungültigen oder numerischen Eigenschaftsnamen in PHP zugreifen?

Wie kann ich mit „json_decode()' auf Objekte mit ungültigen oder numerischen Eigenschaftsnamen in PHP zugreifen?

Mary-Kate Olsen
Freigeben: 2024-12-18 08:16:15
Original
760 Leute haben es durchsucht

How Can I Access Objects with Invalid or Numeric Property Names in PHP Using `json_decode()`?

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

  1. Numerische Eigenschaftsnamen:
    Der Versuch, mit numerischen Namen (ohne vorangestelltes $-Symbol) direkt auf Eigenschaften zuzugreifen, führt zu einer Syntax Fehler.
  2. Syntax in geschweiften Klammern:
    Auf Eigenschaften mit ungültigen Namen kann mithilfe der Syntax in geschweiften Klammern zugegriffen werden, jedoch nur für Namen, die nicht vollständig aus Ziffern bestehen.
  3. Ursprung des Objekts:
    Objekte, die direkt aus Arrays erstellt wurden, können weiterhin über Curly auf numerische Eigenschaften zugreifen Klammersyntax, auch wenn sie technisch ungültig ist.

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!
Nach dem Login kopieren

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'];
Nach dem Login kopieren

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'];
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage