此代码的输出类型是JSONArray:
for($i=0;$i<4;++$i)
{
$data[$i]['Name'] = 'myname'.$i;
}
$json = json_encode($data, JSON_UNESCAPED_UNICODE);
header('Content-type: application/json; charset=utf-8');
echo $json;
结果:
[{"Name":"myname0"},{"Name":"myname1"},{"Name":"myname2"},{"Name":"myname3"}]
但是当我跳过其中一些时,它的输出类型将是JSONObject !!!:
for($i=0;$i<4;++$i)
{
$data[$i]['Name'] = 'myname'.$i;
++$i;
}
$json = json_encode($data, JSON_UNESCAPED_UNICODE);
header('Content-type: application/json; charset=utf-8');
echo $json;
结果:
{"0":{"Name":"myname0"},"2":{"Name":"myname2"}}
为什么?!
正如您所看到的,他们的字段编号将作为这些对象的名称。
答案 0 :(得分:1)
编码数组时,如果键不是连续数字 序列从0开始,所有键都编码为字符串,和 为每个键值对明确指定。
你问题中的第二个例子显然是指上述情况。这就是结果JSON成为JS object
。