Maison >développement back-end >tutoriel php >Pourquoi `json_encode` renvoie-t-il parfois un objet JSON au lieu d'un tableau en PHP ?
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]
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'] ];
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" } }
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);
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" } ]
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!