这段代码的输出类型是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开始,所有键被编码为字符串,和为每个键值对显式指定。
你问题中的第二个例子显然是指上述情况。这就是为什么结果JSON变成了JS object
。