Grundlegendes zur JSON-Kodierung von Sparse-Arrays
Bei der JSON-Kodierung sind Sparse-Arrays (Arrays mit fehlenden Indexwerten) eine Anomalie. Dies liegt daran, dass die Array-Syntax von JSON keine Indizes unterstützt, sodass es unmöglich ist, solche Arrays direkt darzustellen.
Frage:
Warum codiert json_encode ein spärliches Array als JSON? Objekt statt eines Array?
Antwort:
Das Verhalten von json_encode bei spärlichen Arrays ergibt sich aus der Unfähigkeit von JSON, solche Arrays auszudrücken. Wenn json_encode auf ein Array mit geringer Dichte stößt, kodiert es es als JSON-Objekt, um die Schlüssel-Wert-Paare des Arrays beizubehalten.
Beispiel:
Bedenken Sie PHP Code:
$a = array( new stdclass, new stdclass, new stdclass ); $a[0]->abc = '123'; $a[1]->jkl = '234'; $a[2]->nmo = '567'; echo json_encode($a) . "\n"; unset($a[1]); echo json_encode($a) . "\n";
Ausgabe:
[{"abc":"123"},{"jkl":"234"},{"nmo":"567"}] {"0":{"abc":"123"},"2":{"nmo":"567"}}
Erklärung:
Lösung:
An Um die Kodierung eines spärlichen Arrays als Objekt zu verhindern, können Sie array_values($a) verwenden, um ein neu indiziertes Array ohne Lücken zu erhalten. json_encode kodiert dies dann ordnungsgemäß als JSON-Array.
Das obige ist der detaillierte Inhalt vonWarum konvertiert „json_encode' Sparse-Arrays in JSON-Objekte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!