经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » PHP » 查看文章
php json_encode()函数返回对象和数组问题
来源:cnblogs  作者:码缘  时间:2019/9/2 9:32:45  对本文有异议

php json_encode() 函数格式化数据时会根据不同的数组类型格式化不同类型的json数据

  索引数组时

  1. <?php
  2. $arr = [1,2,3,4,5];
  3. print_r(json_encode($arr));
  4. //输出 [1,2,3,4,5]

  关联数组时

  1. <?php
  2. $arr = [
  3. "name"=>"Bob",
  4. "job"=>"IT"
  5. ];
  6. print_r(json_encode($arr));
  7. //输出 {"name":"Bob","job":"IT"}

  空数组

  1. <?php
  2. $arr = [];
  3. print_r(json_encode($arr));
  4. //输出 []

索引数组时生成的是数组类型数据,关联数组时生成的是对象类型的数据,空数组返回的是数组类型。但是当碰到同一个字段返回的数组可能是关联数组也可能是空数组时,就会在app端出现数据类型不一致的问题,解决方式有两种:

一,使用 json_encode的 JSON_FORCE_OBJECT 模式

  1. <?php
  2. $arr = [];
  3. print_r(json_encode($arr,JSON_FORCE_OBJECT));
  4. //输出 {}

但是这种存在一个问题,它会把所有的数据都以对象的方式返回,包括索引数组:

  1. <?php
  2. $arr = [1,2,3,4,5,6];
  3. print_r(json_encode($arr,JSON_FORCE_OBJECT));
  4. //输出 {"0":1,"1":2,"2":3,"3":4,"4":5,"5":6}

二,定义空数据时使用 ArrayObject 定义而不适用  Array() 或者  [] 

  1. <?php
  2. $arr = new ArrayObject();
  3. print_r(json_encode($arr));
  4. //输出 {}

到这里我们可以随意的控制返回的json数据中数据的类型啦!!!!

原文链接:http://www.cnblogs.com/itsuibi/p/11433231.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号