php中json_encode的[]与{}

我们在使用json_encode的时候有的时候生成的json为[],有的情况会生成{}。这样就造成我们在js中解析是不同的。

如果PHP数组的键都是数字或者空数组,那么json_encode()返回一个数组形式的Json,如果PHP数组的键全是字符串。那么json_encode()就会返回一个对象形式的Json。两者在js中的调用是不同的。

事实上,只要在PHP数组的键中有一个字符串形式的键,那么json_encode()就会返回对象形式的Json一个对象,而对象是不可能以数字作为属性名的。

$array = array("name" => "Eric","age" => 23);
echo json_encode($array);

输出结果:{"name":"Eric","age":23}  为对象形式

$array = array(0 => "Eric", 1 => 23);
echo json_encode($array);

输出结果为:["Eric",23] 

$array = array();
echo json_encode($array);

输出结果:[]

如果需要统一转换为对象类型,那就带上JSON_FORCE_OBJECT参数。

如果不需要转移中文,那就带上JSON_UNESCAPED_UNICODE参数。

补充:

对应的json_decode()解析json字符串为php变量:

json_decode($json_str,true);第二个参数的作用是如果为true解析对象形式的json串为php数组,否则解析的为对象格式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值