Explication détaillée du contrôle du format json en php

*文
Libérer: 2023-03-18 17:10:02
original
1578 Les gens l'ont consulté

JSON est largement utilisé dans la transmission de données en raison de sa transmission et de son analyse hautes performances. Cet article présente principalement des informations pertinentes sur une analyse approfondie du contrôle du format php json. J'espère que cela aide tout le monde.

Concernant la question de json, des amis novices sont venus me voir les uns après les autres pour me demander, par exemple, pourquoi je sors {"1": "item1", "2": "item2", "3" :"item3 "} au lieu de ["item1","item2","item3"].

Tableau PHP et tableau js

J'utilise la syntaxe PHP 5.4 ou supérieure ici.

Il existe des tableaux associatifs et des tableaux d'index en php, par exemple :


<?php
// 索引数组
$arr = [&#39;item1&#39;, &#39;item2&#39;, &#39;item3&#39;];
// 关联数组
$arr = [
 &#39;name&#39; => &#39;张三&#39;,
 &#39;age&#39; => &#39;22&#39;,
];
Copier après la connexion


Il n'existe qu'un seul type de tableau en js, qui est le tableau d'index. Peut-être diriez-vous que vous pouvez utiliser des paires clé-valeur K/V pour simuler des tableaux associatifs.

La paire clé-valeur K/V y ressemble, mais elle n'a aucune caractéristique de tableau, je ne l'expliquerai donc pas en détail ici.

Les formats json obtenus après json_encoding du tableau php ci-dessus sont ["item1", "item2", "item3"] et {"name": "u5f20u4e09", "age": vingt-deux "}. Le chinois ici a été converti en Unicode. Si vous insistez pour afficher le chinois, PHP 5.4 et versions ultérieures prennent en charge le paramètre JSON_UNESCAPED_UNICODE($arr, JSON_UNESCAPED_UNICODE) peut obtenir {"name": "Zhang San", "age": 22. " }, mais il est fortement déconseillé d'écrire ainsi.

Ce que nous obtenons ici, ce sont des tableaux sous des chaînes js et json au format objet. Alors pourquoi ces deux types sont-ils générés ? être généré ? Qu'en est-il du format.

Contrôle du format de sortie du tableau php

J'ai listé les situations générales, il suffit de regarder le code.


<?php
$arr = [ // 不是 0 开始,会输出对象
 1 => &#39;item1&#39;,
 2 => &#39;item2&#39;,
 3 => &#39;item3&#39;,
];
echo "输出对象: ", json_encode($arr), "\n";
// 输出对象: {"1":"item1","2":"item2","3":"item3"}
$arr = [ // 连续索引,输出数组
 0 => &#39;item1&#39;,
 1 => &#39;item2&#39;,
 2 => &#39;item3&#39;,
];
echo "输出数组: ", json_encode($arr), "\n";
// 输出数组: ["item1","item2","item3"]
$arr = [ // 连续索引,输出数组 
 &#39;item1&#39;,
 &#39;item2&#39;,
 &#39;item3&#39;,
];
echo "输出数组: ", json_encode($arr), "\n";
// 输出数组: ["item1","item2","item3"]
$arr = [ // 索引不连续,输出对象
 0 => &#39;item1&#39;,
 1 => &#39;item2&#39;,
 2 => &#39;item3&#39;,
 5 => &#39;item5&#39;,
];
echo "输出对象: ", json_encode($arr), "\n";
// 输出对象: {"0":"item1","1":"item2","2":"item3","5":"item5"}
$arr = [ // 包含关联索引,一定输出对象
 0 => &#39;item1&#39;,
 1 => &#39;item2&#39;,
 2 => &#39;item3&#39;,
 &#39;other&#39; => &#39;其他字段&#39;
];
echo "输出对象: ", json_encode($arr), "\n";
// 输出对象: {"0":"item1","1":"item2","2":"item3","other":"\u5176\u4ed6\u5b57\u6bb5"}
// 关联数组 + 索引数组 实例
$arr = [ // 关联数组
 &#39;other&#39; => &#39;其他字段&#39;,
 &#39;count&#39; => 3, // 数组个数
 &#39;list&#39; => [ // 索引数组
  &#39;item1&#39;,
  &#39;item2&#39;,
  &#39;item3&#39;,
 ],
];
echo "对象+数组: ", json_encode($arr), "\n";
// 对象+数组: {"other":"\u5176\u4ed6\u5b57\u6bb5","count":3,"list":["item1","item2","item3"]}
Copier après la connexion


En fait, le premier type est un problème que de nombreux amis novices rencontrent souvent.

Parce qu'une fois la base de données lue, ils aiment utiliser l'identifiant comme index, et l'identifiant de la base de données ne commence pas à 0. Jetez un œil à cet exemple.


$arr = $User->where($where)->find(); // 读取数据
$list = [];
foreach($arr as $key => $val) { // 遍历数组
 $list[$key] = [
  &#39;name&#39; => $val[&#39;name&#39;],
  &#39;age&#39; => $val[&#39;age&#39;],
 ];
}
$list[&#39;count&#39;] = count($arr); // 其他属性
echo json_encode($list); // 输出 json
// {"1":{"name":"zhangsan","age":22},"2":{"name":"lisi","age":25},"count":2}
Copier après la connexion


La dernière méthode est une manière d'écrire plus courante. Utilisez ensemble des champs et des tableaux personnalisés pour modifier l'exemple tout à l'heure. .


$arr = $User->where($where)->find(); // 读取数据
$list = [];
foreach($arr as $key => $val) { // 遍历数组
 $list[&#39;list&#39;][] = [ // 修改这里
  &#39;name&#39; => $val[&#39;name&#39;],
  &#39;age&#39; => $val[&#39;age&#39;],
 ];
}
$list[&#39;count&#39;] = count($arr); // 其他属性
echo json_encode($list); // 输出 json
// {"list":[{"name":"zhangsan","age":22},{"name":"lisi","age":25}],"count":2}
Copier après la connexion



Recommandations associées :

PHP résout le problème d'affichage chinois JSON

php convertit le tableau d'index en json

Introduction aux exemples d'utilisation de json_encode en php

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:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!