Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 空数组字段导致json#U编码';s要从JSONArray更改为JSONObject的输出类型_Php_Arrays_Json - Fatal编程技术网

Php 空数组字段导致json#U编码';s要从JSONArray更改为JSONObject的输出类型

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;

此代码的输出类型为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;$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"}}