使用 json_encode 将 PHP 数组转换为 JSON 时,您可能会遇到输出是对象而不是数组的问题。当数组键不连续时,就会出现这种差异。
根据 JSON 数据交换格式,数组表示为方括号,周围用逗号分隔值:
[value, value, value]
对于 json_encode将数组渲染为 JSON 数组,它必须是连续的,这意味着它的键应该是从0.
示例:
$input = [ ['id' => 0, 'name' => 'name1', 'short_name' => 'n1'], ['id' => 2, 'name' => 'name2', 'short_name' => 'n2'] ];
如果您尝试对这个数组进行 json_encode,您将得到一个 JSON 对象而不是数组:
{ "0": { "id": 0, "name": "name1", "short_name": "n1" }, "2": { "id": 2, "name": "name2", "short_name": "n2" } }
解决方案:
至解决此问题,您需要使用 array_values() 顺序重新索引数组:
$input_sequential = array_values($input); $json_array = json_encode($input_sequential);
此操作将生成 JSON 字符串表示形式作为数组:
[ { "id": 0, "name": "name1", "short_name": "n1" }, { "id": 2, "name": "name2", "short_name": "n2" } ]
以上是为什么 PHP 中的 json_encode 有时会返回 JSON 对象而不是数组?的详细内容。更多信息请关注PHP中文网其他相关文章!