Heim > Backend-Entwicklung > PHP-Tutorial > Wie greife ich in PHP auf Objekteigenschaften mit ungültigen oder ganzzahligen Namen zu?

Wie greife ich in PHP auf Objekteigenschaften mit ungültigen oder ganzzahligen Namen zu?

Patricia Arquette
Freigeben: 2024-12-21 19:25:21
Original
1033 Leute haben es durchsucht

How to Access Object Properties with Invalid or Integer Names in PHP?

Wie kann ich auf Objekteigenschaften mit Namen wie Ganzzahlen oder ungültigen Eigenschaftsnamen zugreifen?

JSON-Dekodierung in PHP führt oft zu Objekten mit Eigenschaften, die ungültige Namen haben. Diese Inkonsistenz erschwert den Zugriff auf diese Eigenschaften mithilfe der Standardobjektsyntax.

Auf Eigenschaften mit gültigen Namen zugreifen

Auf Eigenschaften mit gültigen Variablennamen kann mithilfe der Punktnotation zugegriffen werden :

$data = '{ "name": "John Doe" }';
$obj = json_decode($data);
echo $obj->name; // Output: John Doe
Nach dem Login kopieren

Zugriff auf Eigenschaften mit Ungültigkeit Namen

Der Zugriff auf Eigenschaften mit Ganzzahlen oder anderen ungültigen Namen ist nicht so einfach. PHP hat ein paar Macken, die Fehler verursachen können:

  • PHP 7.2 und höher ermöglichen den Zugriff auf numerische Eigenschaften mithilfe der Syntax in geschweiften Klammern:
$data = '{ "42": "The Answer" }';
$obj = json_decode($data);
echo $obj->{'42'}; // Output: The Answer
Nach dem Login kopieren
  • Allerdings für Bei rein numerischen Eigenschaftsnamen gilt diese Syntax weiterhin schlägt fehl:
$data = '{ "123": "Three Digits" }';
$obj = json_decode($data);
echo $obj->{'123'}; // Error: syntax error
Nach dem Login kopieren
  • Ausnahmen von der obigen Regel treten auf, wenn das Objekt nicht von einem Array abgeleitet ist:
$obj = new stdClass;
$obj->{'123'} = 'Three Digits';
echo $obj->{'123'}; // Output: Three Digits
Nach dem Login kopieren

Praktisch Lösungen

Berücksichtigen Sie diese, um auf Eigenschaften mit ungültigen Namen zuzugreifen Optionen:

  • Manuell in Array umwandeln:
$obj = json_decode($data);
$arr = (array) $obj->highlighting;
$value = $arr['448364']['Data']['0'];
Nach dem Login kopieren
  • Rekursive Array-Umwandlung:
function recursive_cast_to_array($obj) {
    $arr = (array) $obj;
    foreach ($arr as &$value) {
        if (is_object($value)) {
            $value = recursive_cast_to_array($value);
        }
    }
    return $arr;
}

$arr = recursive_cast_to_array($obj);
$value = $arr['highlighting']['448364']['Data']['0'];
Nach dem Login kopieren
  • JSON verwenden Funktionen:
$arr = json_decode(json_encode($obj), true);
$value = $arr['highlighting']['448364']['Data']['0'];
Nach dem Login kopieren

Beachten Sie, dass JSON-Funktionen UTF-8-Kodierung für alle Zeichenfolgen erfordern.

Das obige ist der detaillierte Inhalt vonWie greife ich in PHP auf Objekteigenschaften mit ungültigen oder ganzzahligen Namen zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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