理解稀疏数组的 JSON 编码
在 JSON 编码中,稀疏数组(缺少索引值的数组)是一种异常现象。这是因为 JSON 的数组语法不支持索引,无法直接表示此类数组。
问题:
为什么 json_encode 将稀疏数组编码为 JSON对象而不是数组?
答案:
稀疏数组的 json_encode 行为源于 JSON 无法表达此类数组。当 json_encode 遇到稀疏数组时,它会将其编码为 JSON 对象来维护数组的键值对。
示例:
考虑 PHP代码:
$a = array( new stdclass, new stdclass, new stdclass ); $a[0]->abc = '123'; $a[1]->jkl = '234'; $a[2]->nmo = '567'; echo json_encode($a) . "\n"; unset($a[1]); echo json_encode($a) . "\n";
输出:
[{"abc":"123"},{"jkl":"234"},{"nmo":"567"}] {"0":{"abc":"123"},"2":{"nmo":"567"}}
解释:
解决方案:
要防止将稀疏数组编码为对象,可以使用array_values($a) 获取没有任何漏洞的重新索引数组。然后 json_encode 会将其正确编码为 JSON 数组。
以上是为什么'json_encode”将稀疏数组转换为 JSON 对象?的详细内容。更多信息请关注PHP中文网其他相关文章!