Beim Konvertieren von PHP-Arrays in JSON mit json_encode kann es zu einem Problem kommen, bei dem die Ausgabe ein Objekt statt eines Arrays ist. Diese Diskrepanz entsteht, wenn Ihre Array-Schlüssel nicht sequentiell sind.
Gemäß dem JSON-Datenaustauschformat wird ein Array als eckige Klammern dargestellt, die durch Kommas getrennte Werte umgeben:
[value, value, value]
Für json_encode bis Wenn Sie Ihr Array als JSON-Array rendern, muss es sequentiell sein, d. h. seine Schlüssel sollten aufeinanderfolgende Ganzzahlen sein, beginnend mit 0.
Beispiel:
$input = [ ['id' => 0, 'name' => 'name1', 'short_name' => 'n1'], ['id' => 2, 'name' => 'name2', 'short_name' => 'n2'] ];
Wenn Sie versuchen, dieses Array mit json_encode zu kodieren, erhalten Sie ein JSON-Objekt anstelle eines Arrays:
{ "0": { "id": 0, "name": "name1", "short_name": "n1" }, "2": { "id": 2, "name": "name2", "short_name": "n2" } }
Lösung:
Um dieses Problem zu beheben, müssen Sie eine Neuindizierung durchführen Ihr Array nacheinander mit array_values():
$input_sequential = array_values($input); $json_array = json_encode($input_sequential);
Dieser Vorgang führt zu einer JSON-String-Darstellung als Array:
[ { "id": 0, "name": "name1", "short_name": "n1" }, { "id": 2, "name": "name2", "short_name": "n2" } ]
Das obige ist der detaillierte Inhalt vonWarum gibt „json_encode' in PHP manchmal ein JSON-Objekt anstelle eines Arrays zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!