首页 >后端开发 >php教程 >为什么 PHP 中的 json_encode 有时会返回 JSON 对象而不是数组?

为什么 PHP 中的 json_encode 有时会返回 JSON 对象而不是数组?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-03 08:51:09675浏览

Why Does `json_encode` Sometimes Return a JSON Object Instead of an Array in PHP?

将 PHP 数组编码为 JSON 数组

使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn