json_encode PHP 数组为 JSON 数组而不是 JSON 对象

2024-03-26

我在 PHP 中有以下数组:

Array
(
    [0] => Array
        (
            [id] => 0
            [name] => name1
            [short_name] => n1
        )

    [2] => Array
        (
            [id] => 2
            [name] => name2
            [short_name] => n2
        )
)

我想将其 JSON 编码为 JSON 数组,生成如下所示的字符串:

[  
    {  
        "id":0,
        "name":"name1",
        "short_name":"n1"
    },
    {  
        "id":2,
        "name":"name2",
        "short_name":"n2"
    }
]

但当我打电话时json_encode https://www.php.net/json_encode在此数组上,我得到以下信息:

{  
    "0":{  
        "id":0,
        "name":"name1",
        "short_name":"n1"
    },
    "2":{  
        "id":2,
        "name":"name2",
        "short_name":"n2"
    }
}

这是一个对象而不是数组。

我怎样才能得到json_encode将我的数组编码为数组,而不是?


See Arrays https://datatracker.ietf.org/doc/html/rfc8259#section-5在 RFC 8259 中JavaScript 对象表示法 (JSON) 数据交换格式:

数组结构表示为围绕零的方括号 或更多值(或元素)。元素之间用逗号分隔。

数组 = 开始数组 [ 值 *( 值分隔符值 ) ] 结束数组

您正在观察这种行为,因为您的数组不是连续的 - 它有键0 and 2,但没有1作为钥匙。

仅拥有数字索引是不够的。json_encode如果您的 PHP 数组是连续的,也就是说,如果它的键是 0, 1, 2, 3, ...,则只会将您的 PHP 数组编码为 JSON 数组

您可以使用以下命令顺序重新索引数组array_values https://www.php.net/array_values函数来获得你想要的行为。例如,下面的代码在您的用例中可以成功运行:

echo json_encode(array_values($input)).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

json_encode PHP 数组为 JSON 数组而不是 JSON 对象 的相关文章

随机推荐