Php 空数组字段导致json#U编码';s要从JSONArray更改为JSONObject的输出类型
此代码的输出类型为JSONArray:Php 空数组字段导致json#U编码';s要从JSONArray更改为JSONObject的输出类型,php,arrays,json,Php,Arrays,Json,此代码的输出类型为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; 但是当我跳过其中一些时,它的输出类型将是JSONObject!!!: for($i=0;
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;
但是当我跳过其中一些时,它的输出类型将是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开始的序列,所有键都编码为字符串,并且
为每个键值对显式指定
你问题中的第二个例子显然是指上述情况。这就是为什么JSON的结果变成了JS
object
@mdp如果这个答案真的对你有帮助的话,你也可以投票给它
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"}}