Maison > développement back-end > tutoriel php > Pourquoi « json_encode » convertit-il les tableaux clairsemés en objets JSON ?

Pourquoi « json_encode » convertit-il les tableaux clairsemés en objets JSON ?

Susan Sarandon
Libérer: 2024-11-25 08:55:12
original
790 Les gens l'ont consulté

Why Does `json_encode` Convert Sparse Arrays to JSON Objects?

Comprendre l'encodage JSON des tableaux clairsemés

Dans l'encodage JSON, les tableaux clairsemés (tableaux avec des valeurs d'index manquantes) sont une anomalie. En effet, la syntaxe des tableaux de JSON ne prend pas en charge les indices, ce qui rend impossible la représentation directe de tels tableaux.

Question :

Pourquoi json_encode encode-t-il un tableau clairsemé en JSON objet au lieu d'un array?

Réponse :

Le comportement de json_encode avec des tableaux clairsemés provient de l'incapacité de JSON à exprimer de tels tableaux. Lorsque json_encode rencontre un tableau clairsemé, il a recours à son codage en tant qu'objet JSON pour conserver les paires clé-valeur du tableau.

Exemple :

Considérez le PHP code :

$a = array(
    new stdclass,
    new stdclass,
    new stdclass
);
$a[0]->abc = '123';
$a[1]->jkl = '234';
$a[2]->nmo = '567';

echo json_encode($a) . "\n";
unset($a[1]);
echo json_encode($a) . "\n";
Copier après la connexion

Sortie :

[{"abc":"123"},{"jkl":"234"},{"nmo":"567"}]
{"0":{"abc":"123"},"2":{"nmo":"567"}}
Copier après la connexion

Explication :

  • Dans le premier encodage, le tableau clairsemé est représenté comme un tableau JSON valide avec trois objets.
  • Après avoir supprimé l'index 1, le Le tableau clairsemé contient un trou, ce qui oblige json_encode à le convertir en objet JSON pour conserver l'association entre les clés et les valeurs.

Solution :

Pour éviter l'encodage d'un tableau clairsemé en tant qu'objet, vous pouvez utiliser array_values($a) pour obtenir un tableau réindexé sans aucun trou. json_encode l'encodera alors correctement sous forme de tableau JSON.

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