Heim > Backend-Entwicklung > PHP-Tutorial > Warum gibt „json_encode' in PHP manchmal ein JSON-Objekt anstelle eines Arrays zurück?

Warum gibt „json_encode' in PHP manchmal ein JSON-Objekt anstelle eines Arrays zurück?

Mary-Kate Olsen
Freigeben: 2024-12-03 08:51:09
Original
630 Leute haben es durchsucht

Why Does `json_encode` Sometimes Return a JSON Object Instead of an Array in PHP?

PHP-Arrays als JSON-Arrays kodieren

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]
Nach dem Login kopieren

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']
];
Nach dem Login kopieren

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"
    }
}
Nach dem Login kopieren

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);
Nach dem Login kopieren

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"
    }
]
Nach dem Login kopieren

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!

Quelle:php.cn
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