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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值