Maison > développement back-end > tutoriel php > Le résultat après la conversion d'un tableau en json est-il un tableau ou un objet ? (Carnet de voyage)

Le résultat après la conversion d'un tableau en json est-il un tableau ou un objet ? (Carnet de voyage)

藏色散人
Libérer: 2023-04-09 17:46:01
avant
3623 Les gens l'ont consulté

Recommandé : "Tutoriel vidéo PHP"

Je rencontre souvent ces problèmes au travail récemment, alors enregistrez-les ~

Voici les explications Jetez un œil, après json_encode, les résultats sont tous des chaînes, mais les résultats que j'ai mentionnés ici sont les résultats après transfert vers le front-end, car récemment, davantage de données d'interface ont été écrites, et ce genre de problème est souvent rencontré si c'est le cas. n'est visualisé qu'en PHP, Alors ils peuvent tous être des tableaux...

Question : Convertir un tableau en json, parfois c'est un objet, parfois c'est un tableau ?

Cas 1 :

$arr = [1,2,3];//数组下标从0开始的
echo json_encode($arr);     //[1,2,3] 

$arr = [1=>1,2=>2,3=>3];//数组下标不是从0开始
echo json_encode($arr);//{"1":1,"2":2,"3":3}
Copier après la connexion

Si vous devez renvoyer un tableau à ce moment-là, vous pouvez le gérer comme ceci

$arr = [1=>1,2=>2,3=>3];
echo json_encode(array_values($arr));//[1,2,3]
Copier après la connexion

Cas 2 :

$arr = [];
$arr[0] = 'xxx';
$arr[1] = 'yyy';
echo json_encode($arr);//["xxx","yyy"] 

$arr = [];
$arr[1] = 'yyy';
$arr[0] = 'xxx';
echo json_encode($arr);//{"1":"yyy","0":"xxx"}
Copier après la connexion

Vous pouvez voir que les indices des missions sont les mêmes, mais l'ordre d'exécution a changé, et les résultats sont également différents

Ce qui suit est une solution suggérée par un ami

$arr = [];
$arr[1] = 'yyy';
$arr[0] = 'xxx';
$arr = array_values($arr);
echo json_encode($arr);//["yyy","xxx"]
Copier après la connexion

Vous pouvez voir qu'il y a un problème avec le résultat. L'indice d'origine de yyy est 1 et le résultat est 0
Le résultat que nous voulons est. ["xxx", "yyy"]

Voici une solution

$arr = [];
$arr[1] = 'yyy';
$arr[0] = 'xxx';
ksort($arr);
echo json_encode($arr);//["xxx","yyy"]
Copier après la connexion

Cas 3 :

$arr = [];
$arr[0] = 'yyy';
$arr[2] = 'xxx';
print_r($arr);
echo json_encode($arr);
/*Array
(
    [0] => yyy
    [2] => xxx
)
{"0":"yyy","2":"xxx"}
*/
Copier après la connexion

Cas 4 :

$arr = [];
echo json_encode($arr);//[]
Copier après la connexion

Résumé :

Lors de la conversion d'un tableau en json, si l'index n'est pas 0, 1, 2, ... à partir de 0 dans dans l'ordre, la structure json renvoyée est un objet ; ce que vous voulez renvoyer est un tableau, il doit être strictement exigé que l'index commence à 0, dans l'ordre, il ne peut y avoir aucun nombre brisé au milieu                                         

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!

Étiquettes associées:
php
source:learnku.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal