简说PHP JSON问题(有序无序问题)
首先 什么是JSON:
通俗的说,它是一种数据的存储格式,就像PHP序列化后的字符串一样。它是一种数据描述。比如我们将一个数组序列化后存放,就可以很容易的反序列化后应 用。JSON也是如此,只不过他搭建的是客户端Javascript和服务端PHP的交互桥梁。我们用PHP生成JSON后的字符串,然后把这个字符串传 给前台Javascript,Javascirpt就可以很容易的将其反JSON然后应用。说通俗点,它真的很像数组。(ps:为了尊重别人劳动成果,说明一下这段文字不是我所写)

PHP中的JSON
PHP5.2开始内置了JSON的支持。当然,如果低于这个版本的话,那么市面上有很多PHP版本的实现,现在主要是说说PHP内 置支持的JSON。两个函数:json_encode(编码)和json_decode(解码).eg:

$a2 = array('0'=>3,'1'=>'admin1','2'=>'boy1');

echo json_encode($a2);

将输出: [3,"admin1","boy1"]

JS中的JSON
一般JS中有两种形式上的JSON格式的数据:
 A:[{"id":3,"user":"admin1","sex":"boy1"}]

B: {"1":{"id":3,"user":"admin1","sex":"boy1"}}

A与B的区别在于:前面一个(A),对于js来说是一个数组,并且是有序的,可以取到长度,且数组里面的元素是json。
后面一个(B),对于js来说是一个二维json,不能取到长度,在某些浏览器无序。但取值都推荐使用:obj['key']['key'] 这种方式。eg: var b = {"1":{"id":3,"user":"admin1","sex":"boy1"}} 则取值为:var id = b['1']['id'];
 
重点(有序无序问题):
好了,上面很简单的说了说PHP 与 JS? 中的JSON。
那么现在,出现了一个有趣的问题。

问题描述: 在用PHP 的JSON_ENCODE实现输出JSON数据时,如果传入的数组的KEY值是数字有序形式(即:KEY值是从0,1,2,3,4,5.......N,0值不能少)的,那么将输出一个JS格式上的数组数据( 数组里面的元素是json );如果不是,那么将输出一个JS格式上的JSON数据。

问题验证
? EG1:? (无序)? 
$a2 = array('id'=>3,'name'=>'admin1','2'=>'boy1');
echo json_encode($a2);
?这将输出: {"id":3,"name":"admin1","2":"boy1"}

?EG2: (无序)
$a2 = array('0'=>3,'2'=>'admin1','1'=>'boy1');
echo json_encode($a2);
?这将输出:{"0":3,"2":"admin1","1":"boy1"}

EG3 (有序)
$a2 = array('0'=>3,'1'=>'admin1','2'=>'boy1');
echo json_encode($a2);
这将输出:[3,"admin1","boy1"]

EG3(二维数组无序,KEY值没有从0开始)
$a1 = array(
'1'=>array('id'=>3,'user'=>'admin1','sex'=>'boy1'),
'2'=>array('id'=>4,'user'=>'admin2','sex'=>'boy2'),
'3'=>array('id'=>5,'user'=>'admin3','sex'=>'boy3')
);
echo json_encode($a1);
这将输出:{"1":{"id":3,"user":"admin1","sex":"boy1"},"2":{"id":4,"user":"admin2","sex":"boy2"},"3":{"id":5,"user":"admin3","sex":"boy3"}}

EG4(二维数组有序,KEY值从0 开始)
$a1 = array(
'0'=>array('id'=>3,'user'=>'admin1','sex'=>'boy1'),
'1'=>array('id'=>4,'user'=>'admin2','sex'=>'boy2'),
'2'=>array('id'=>5,'user'=>'admin3','sex'=>'boy3')
);
echo json_encode($a1);
这将输出:[{"id":3,"user":"admin1","sex":"boy1"},{"id":4,"user":"admin2","sex":"boy2"},{"id":5,"user":"admin3","sex":"boy3"}]

那么 对比以上例子,再联想到(“对于js来说是一个json,不能取到长度,在某些浏览器无序”)这句话,可以想到PHP自作主张的帮我识别了你的数据在输出时是否是需要有序输出。

备注:

对于unset后导致数组变为无序,可以使用sort重新排序

对于$array = array("size" => "XL", "color" => "gold");
print_r(array_values($array));

动态添加二维数组:

$item = array();

$list[] = $item

PHP json_encode 有序无序问题相关推荐

  1. json_encode时中文编码转正常状态

    function json_encode_cn($data) {$data = json_encode($data);return preg_replace("/\\\u([0-9a-f]{ ...

  2. json_encode 中文不乱码

    echo json_encode("中文", JSON_UNESCAPED_UNICODE);//"中文" 转载于:https://www.cnblogs.co ...

  3. 调用短信接口,先var_dump()看数据类型是object需要json_decode(json_encode( $resp),true)转换成array...

    返回的数据.先看类型,如果是object类型 先json_encode, 再json_decode,加true 转换成数组 $resp = $c->execute($req); var_dump ...

  4. php json_encode中提示的中文总是返回\u767b\u5f55\u6210\u529f\uff01的解决办法

    最近在练习使用 php 写一些简单的接口,但是在返回的消息中,如果有中文,在测试后总是返回: {"resultCode":200,"message":" ...

  5. 转载:PHP JSON_ENCODE 不编码中文汉字的方法

    1.PHP版本5.4(包含)+ json_encode($data, JSON_UNESCAPED_UNICODE); //必须PHP5.4+ 2.PHP版本5.4- function encode_ ...

  6. igbinary vs serialize vs json_encode

    最近看到memcached扩展支持额外的序列化方式 -igbinary,这是一个未收录到pecl的php扩展,它提供的两个主要方法: igbinary_serialize igbinary_unser ...

  7. json字符串拼接 json_encode 数组带有花括号{}和中括号[]

    2019独角兽企业重金招聘Python工程师标准>>> 字母索引的数组的是花括号,数字索引才是中括号 数字索引的数组示例: $p = array('name'=>'yu','a ...

  8. PHP JSON_ENCODE 不转义中文汉字的方法

    iOS程序中不识别读取到的JSON数据中 \u开头的数据. PHP 生成JSON的时候,必须将汉字不转义为 \u开头的UNICODE数据. 网上很多,但是其实都是错误的,正确的方法是在json_enc ...

  9. 微信 php 接口 函数,PHP的json_encode函数应用到微信接口有关问题(include \uxxxx will create fail)...

    PHP的json_encode函数应用到微信接口问题(include \uxxxx will create fail) 今天学习了一下微信企业号发送消息的接口,发现在发送含有中文字符的信息时,微信接口 ...

最新文章

  1. 每日一皮:最适合编程写代码的键盘!
  2. Ant打可执行jar包指南
  3. boost::serialization模块指针反序列化的安全异常处理示例
  4. 绕过mysql的id:32933 BUG 实现order by limit 正常取数据.
  5. pjsip for Android的编译
  6. 操作系统之进程管理:2、进程的状态以及状态转化
  7. XML DOM 节点类型(Node Types)
  8. mysql 层_mysql各个层面优化
  9. 深度好文!男性在青年时期应为自己做哪些投资?
  10. 互联网年终福利大盘点,告诉你过年的正确姿势!
  11. Linux内核的学习(二)
  12. c标准语言库里的i o函数,C语言文件I/O和标准I/O函数
  13. Matlab学习随笔 ——bin文件读写
  14. 荣耀笔记本linux版硬盘分区,荣耀MagicBook硬盘分区详细教程
  15. H5在微信端自动播放音乐
  16. 用函数统计各分数段人数c语言,excel统计各分数段人数的函数
  17. 华为 AI 芯片诞生;马云重当中国首富;微软修复数据删除 Bug | 极客头条
  18. 输入现在的日期,输出明天的日期
  19. win10环境下搭建IIS图片服务器
  20. 开始搞点其他的事-成立北京租房群(霍营、回龙观、西二旗、望京)

热门文章

  1. Base64图片页面显示
  2. 拜耳集全球创新服务中国农业,积极构建粮食系统韧性
  3. 生产者消费者模型——C语言代码详解
  4. opencv做颜色识别(python)
  5. maven多仓库配置 公司仓库和阿里仓库
  6. excel计算二元线性回归_实例分析,如何用最小二乘法做线性回归?
  7. vue cli3 默认端口修改
  8. 人脸识别算法实验:facenet人脸识别率测试
  9. CTFHub 文件上传
  10. 现在FRM培训多少钱?贵吗?