Maison > développement back-end > tutoriel php > Pourquoi `json_encode` renvoie-t-il parfois un objet JSON au lieu d'un tableau en PHP ?

Pourquoi `json_encode` renvoie-t-il parfois un objet JSON au lieu d'un tableau en PHP ?

Mary-Kate Olsen
Libérer: 2024-12-03 08:51:09
original
725 Les gens l'ont consulté

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

Encodage de tableaux PHP en tant que tableaux JSON

Lors de la conversion de tableaux PHP en JSON à l'aide de json_encode, vous pouvez rencontrer un problème où la sortie est un objet au lieu d'un tableau. Cet écart se produit lorsque les clés de votre tableau ne sont pas séquentielles.

Selon le format d'échange de données JSON, un tableau est représenté sous forme de crochets entourant les valeurs séparées par des virgules :

[value, value, value]
Copier après la connexion

Pour json_encode à affichez votre tableau sous forme de tableau JSON, il doit être séquentiel, ce qui signifie que ses clés doivent être des entiers consécutifs commençant par 0.

Exemple :

$input = [
    ['id' => 0, 'name' => 'name1', 'short_name' => 'n1'],
    ['id' => 2, 'name' => 'name2', 'short_name' => 'n2']
];
Copier après la connexion

Si vous essayez d'encoder en json ce tableau, vous obtiendrez un objet JSON au lieu d'un tableau :

{
    "0": {
        "id": 0,
        "name": "name1",
        "short_name": "n1"
    },
    "2": {
        "id": 2,
        "name": "name2",
        "short_name": "n2"
    }
}
Copier après la connexion

Solution :

Pour résoudre ce problème, vous devez réindexer votre tableau séquentiellement en utilisant array_values() :

$input_sequential = array_values($input);
$json_array = json_encode($input_sequential);
Copier après la connexion

Cette opération entraînera une représentation sous forme de chaîne JSON sous forme de tableau :

[
    {
        "id": 0,
        "name": "name1",
        "short_name": "n1"
    },
    {
        "id": 2,
        "name": "name2",
        "short_name": "n2"
    }
]
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal