php数组和json数组之间的互相转化的微妙差异

今天在修改一个接口时发现,突然间不能正常显示,排查后发现是接口返回的json对象中某个节点由数组变成了对象导致解析出错。

$a = array(
    0 => 1,
    1 => 'b',
    'c' => 'c'
);

echo json_encode($a);

{"0":1,"1":"b","c":"c"}


$b = array(
    0 => 1,
    1 => 'b',
    2 => 'c'
);
echo json_encode($b);

[1,"b","c"]

$b = array(

    1 => 'b',
    2 => 'c'
);
echo json_encode($b);
{"1":"b","2":"c"}


$c = array(
    0 => 1,
    1 => 'b',
    3 => 'c'
);

echo json_encode($c);

{"0":1,"1":"b","3":"c"}


$d = array(
	0 => 1,
	1 => 'b',
	3 => array(
		'name' => 'mike',
		'sex' => 'man',
		"score" => array(1,2,3,4,5,6,7,8),
		"soore_b" => array(1,2,3,4,5,6,7,"t"=> 8)
	),
);

echo json_encode($d);die();
{
	"0": 1,
	"1": "b",
	"3": {
		"name": "mike",
		"sex": "man",
		"score": [1, 2, 3, 4, 5, 6, 7, 8],
		"soore_b": {
			"0": 1,
			"1": 2,
			"2": 3,
			"3": 4,
			"4": 5,
			"5": 6,
			"6": 7,
			"t": 8
		}
	}
}

 

// 在纯数字下标,且是自然顺序排序的时候,即从0开始没有间隔的依次排序的,则json会自动省略数字下标,此时,被转化为了一个json数组,而以字符串作为下标时,则转化为json对象了。 上面的最后一个例子很好地说明了其中的差异

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值