我在 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(使用前将#替换为@)