[英]PHP json_encode makes object, not array
我有以下 PHP 代码,它访问数据库函数,获取响应并将其编码为 JSON。
它应该创建一个错误对象,然后创建一个包含所有返回的数据库行的数组。
$key = $db->getKeyPermissions();
if ($key != false) {
$response["error"] = FALSE;
for($i = 0; $i < count($key); $i++){
$response["key"] = array();
$response["key"]["endpoint_description"] = $key[$i]["endpoint_description"];
$response["key"]["live"] = $key[$i]["live"];
$response["key"]["activity_name"] = $key[$i]["activity_name"];
}
echo json_encode($response);
而不是回显大约 13 个项目的列表,它只将最后一个项目作为对象回显。 我究竟做错了什么? 如何将“键”对象转换为包含所有键的列表。
这是 JSON 输出。
{
"error": false,
"key": {
"endpoint_description": "Guilds' rosters, history, and MOTDs for all guilds you are a member of.",
"live": 0,
"activity_name": ""
}
}
我相当确定这就是它应该是什么样子,我需要它。
{
"error": false,
"key": [
{
"endpoint_description": "Guilds' rosters, history, and MOTDs for all guilds you are a member of.",
"live": 0,
"activity_name": ""
},
{
"endpoint_description": "Guilds' rosters, history, and MOTDs for all guilds you are a member of.",
"live": 0,
"activity_name": ""
},
{
"endpoint_description": "Guilds' rosters, history, and MOTDs for all guilds you are a member of.",
"live": 0,
"activity_name": ""
}
]
}
$key = $db->getKeyPermissions();
if ($key != false) {
$response["error"] = FALSE;
for($i = 0; $i < count($key); $i++){
$response["key"][$i] = array();
$response["key"][$i]["endpoint_description"] = $key[$i]["endpoint_description"];
$response["key"][$i]["live"] = $key[$i]["live"];
$response["key"][$i]["activity_name"] = $key[$i]["activity_name"];
}
echo json_encode($response);
这应该按预期工作 [$i] 丢失。根据您的要求,用法可以像
$response["key"][$i]
请检查
$key = $db->getKeyPermissions();
if ($key != false) {
$response["error"] = FALSE;
$response["key"] = array();
for($i = 0; $i < count($key); $i++){
$response["key"][] = [
"endpoint_description" => $key[$i]["endpoint_description"],
"live" => $key[$i]["live"],
"activity_name" => $key[$i]["activity_name"]
];
}
echo json_encode($response);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.