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";
Sortie :
[{"abc":"123"},{"jkl":"234"},{"nmo":"567"}] {"0":{"abc":"123"},"2":{"nmo":"567"}}
Explication :
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!