PHP使用json_encode函数返回格式问题

作者: LeeHeng 分类: 后端 发布时间: 2017-08-02 18:32

PHP中使用json_encode(内置函数),在写接口的时候返回数据使用的格式

上面例子是一段没有问题的示例,但在某种情况下回出现一种返回格式,不知道是否只有我个人遇到,当遇到这种情况的时候,goole、百度无果,具体是什么原因呢?

首先来探索问题

这个json返回的格式是没有问题,问题是data里面的对象集,为什么会出现0,1,2 索引数组的键值呢?在php里面var_dump输出数组是这样

没发现有什么不对经,而且使用的代码就是json_encode输出。刚开始不怎么注意,但是App客户端调用接口的时候,上面的json格式就不能使用了,因为json正确返回的对象集,索引数组返回是没有索引值的。

问题定位

很多时候,我们在查完数据之后,一般都会做数据处理,例如对字段进行格式化、关联查询、去除等……这样就需要进行foreach遍历,正常都是这样处理

这样输出一定有问题,原因在于有了一层判断,判断内$items[$key]使用的key已经跳过了一个数组,原本应该是0,1,2,3,4,5这样的顺序,当条件$val[‘areaCode’] == 86的时候,这时候$key是4,就会直接跳过,下一次循环的时候$key是5,最后数组数组的索引key值是0,1,2,3,5,6,再使用json_encode返回的时候,由于索引值不是自然排序索引,就出现上面的问题。

解决问题

最简单的解决方法就是,重组key值,怎么重组?答案是:不使用遍历中定义的$key,使用临时变量$temp,再把临时变量赋值到$items

PS:遇到问题还是要多分析一下,在百度搜索,一大堆都是乱码转码,要么就是没有答案,自己动脑解决,问题解决,能力又可以得到提升。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注