繁体   English   中英

PHP json_encode 生成对象,而不是数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM