Maison > Article > développement back-end > Explication détaillée du contrôle du format json en php
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 = ['item1', 'item2', 'item3']; // 关联数组 $arr = [ 'name' => '张三', 'age' => '22', ];
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 => 'item1', 2 => 'item2', 3 => 'item3', ]; echo "输出对象: ", json_encode($arr), "\n"; // 输出对象: {"1":"item1","2":"item2","3":"item3"} $arr = [ // 连续索引,输出数组 0 => 'item1', 1 => 'item2', 2 => 'item3', ]; echo "输出数组: ", json_encode($arr), "\n"; // 输出数组: ["item1","item2","item3"] $arr = [ // 连续索引,输出数组 'item1', 'item2', 'item3', ]; echo "输出数组: ", json_encode($arr), "\n"; // 输出数组: ["item1","item2","item3"] $arr = [ // 索引不连续,输出对象 0 => 'item1', 1 => 'item2', 2 => 'item3', 5 => 'item5', ]; echo "输出对象: ", json_encode($arr), "\n"; // 输出对象: {"0":"item1","1":"item2","2":"item3","5":"item5"} $arr = [ // 包含关联索引,一定输出对象 0 => 'item1', 1 => 'item2', 2 => 'item3', 'other' => '其他字段' ]; echo "输出对象: ", json_encode($arr), "\n"; // 输出对象: {"0":"item1","1":"item2","2":"item3","other":"\u5176\u4ed6\u5b57\u6bb5"} // 关联数组 + 索引数组 实例 $arr = [ // 关联数组 'other' => '其他字段', 'count' => 3, // 数组个数 'list' => [ // 索引数组 'item1', 'item2', 'item3', ], ]; echo "对象+数组: ", json_encode($arr), "\n"; // 对象+数组: {"other":"\u5176\u4ed6\u5b57\u6bb5","count":3,"list":["item1","item2","item3"]}
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] = [ 'name' => $val['name'], 'age' => $val['age'], ]; } $list['count'] = count($arr); // 其他属性 echo json_encode($list); // 输出 json // {"1":{"name":"zhangsan","age":22},"2":{"name":"lisi","age":25},"count":2}
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['list'][] = [ // 修改这里 'name' => $val['name'], 'age' => $val['age'], ]; } $list['count'] = count($arr); // 其他属性 echo json_encode($list); // 输出 json // {"list":[{"name":"zhangsan","age":22},{"name":"lisi","age":25}],"count":2}
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!