⼀个php数组转json变对象的踩坑记录
这⾥是⼯作中遇到的另⼀个⼩坑,虽然说起来很简单,但是如果不注意还是会中招。这⾥记录下来防⽌以后再犯这种错误。
问题描述
这是在⼯作中出现的⼀个问题,前端报接⼝返回值跟接⼝⽂档不⼀致。⽂档约定是返回数组,但是实际返回的是⼀个对象。
对象
但是我在本地和⽤另⼀个测试账户调⽤都是返回数组,只有这个账户返回对象。
phpjson格式化输出数组
解决过程
于是跟着代码⼀步步跟下去,发现⼀直到最后⼀步,转json前返回值都⼀直是数组。转成json传给前端就变成对象了,⽽且还不是必现,有的账号有有的账号没有。
那问题肯定就出在转json这⼀步了。但是⾃⼰确实没想到是什么原因,根据咨询同事,才算补充了之前的⼀个知识盲点:PHP的数组在转JSON的时候,如果索引连续,则转成数组。如果索引不连续,则会转成对象!
可以看到,第⼀张截图中其实是没有索引4的元素的,数组是不连续的。确实是因为我的⽅法中进⾏了array_unique的操作,导致有元素被去除,但是索引没有重排。但是之前确实不知道如果索引不连续会被转成对象。
以后需要记住这⼀点,遇到这种情况在数组返回之前⼀定要进⾏array_values过滤。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论