查看: 52|回复: 0

php json_encode()函数返回对象和数组问题

[复制链接]

1

主题

0

回帖

0

积分

热心网友

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2008-1-7
发表于 2019-8-31 10:54:00 | 显示全部楼层 |阅读模式

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

  索引数组时

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

  关联数组时

<?php
$arr = [
    "name"=>"Bob",
    "job"=>"IT"
];
print_r(json_encode($arr));
//输出  {"name":"Bob","job":"IT"}

  空数组

<?php
$arr = [];
print_r(json_encode($arr));
//输出 []

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

一,使用 json_encode的 JSON_FORCE_OBJECT 模式

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

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

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

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

<?php
$arr = new ArrayObject();
print_r(json_encode($arr));
//输出 {}

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



来源:https://www.cnblogs.com/itsuibi/p/11433231.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部