Maison  >  Article  >  développement back-end  >  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)

藏色散人
藏色散人avant
2021-01-19 15:57:353581parcourir

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}

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]

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"}

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"]

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"]

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"}
*/

Cas 4 :

$arr = [];
echo json_encode($arr);//[]

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer