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
Patricia ArquetteOriginal
2024-12-21 19:25:211007Durchsuche

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

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
  • 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
  • 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

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'];
  • 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'];
  • JSON verwenden Funktionen:
$arr = json_decode(json_encode($obj), true);
$value = $arr['highlighting']['448364']['Data']['0'];

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!

Stellungnahme:
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