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
Mary-Kate OlsenOriginal
2024-12-03 08:51:09711Durchsuche

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]

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!

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