JSON_ENCODE kodiert Sparse-Arrays unterschiedlich: Objekt vs. Array
Bei der Arbeit mit Sparse-Arrays ist es wichtig zu verstehen, wie sich json_encode verhält. Ein spärliches Array enthält fehlende Indizes, wodurch Lücken in der numerischen Reihenfolge entstehen.
Das Problem
Wie im bereitgestellten Codeausschnitt gezeigt, codiert json_encode zunächst das spärliche Array Array $a als Array. Nach dem Entfernen eines Elements mit unset erzeugt der nachfolgende json_encode-Aufruf jedoch ein JSON-Objekt.
Die Erklärung
JSON bietet keine Möglichkeit, Arrays mit fehlenden Indizes darzustellen. Daher greift json_encode auf die Codierung von Arrays mit geringer Dichte als JSON-Objekte zurück, wenn es auf solche Lücken stößt.
Die Lösung
Um dieses Verhalten zu vermeiden und sicherzustellen, dass Arrays mit geringer Dichte vorhanden sind Da sie konsistent als Arrays codiert sind, können Sie array_values($a) verwenden, bevor Sie json_encode anwenden. Diese Funktion indiziert das Array neu, entfernt die Lücken und sorgt für eine konsistente Ausgabe.
Das obige ist der detaillierte Inhalt vonWarum behandelt „json_encode' Sparse-Arrays je nach ihrer Struktur unterschiedlich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!