首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回数组而不是对象

返回数组而不是对象
EN

Stack Overflow用户
提问于 2014-11-11 12:45:54
回答 5查看 2K关注 0票数 2

我像这样从DB中获取数据

代码语言:javascript
复制
$endResult = array();

  while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ 
    if (!isset($endResult[$row['car']])) {
            $endResult[$row['car']]= (object) array(
              'car' => $row['car'],
              'carModel' => $row['carModel'],
              'colors' => array()
        );
    }

                $endResult[$row['car']] -> colors [] = (object) array(
                    'paintedOn' => $row['paintenOnDate'],
                    'paintedBy' => $row['paintedBy']
                );
            }

//return with slim.php 
$response->body(json_encode($endResult));

结果我得到了

代码语言:javascript
复制
{"1": 
  {
    "car": "1",
    "carModel": "model-1",
    "colors": [
        {
            "paintedOn": "2014-11-07",
            "paintedBy": "5"
        },{
            "paintedOn": "2014-11-08",
            "paintedBy": "6"
        }]
     },
"2":{
    "car": "2",
    "carModel": "model-2",
    "colors": [
        {
            "paintedOn": "2014-11-09",
            "paintedBy": "7"
        },{
            "paintedOn": "2014-11-10",
            "paintedBy": "8"
        }]
     }
   }//<--replace this with []

即使$endResult被声明为数组,我也得到了{}括号,如何将"Object“括号替换为" Array”括号?

更新:我不能删除json_encode作为前端(主干)期待的集合

更新2:$endResult = array();返回[...],但此$endResult[$row['car']]= (object) array(...)将其转换为{...}

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-11-11 13:40:27

您无法实现您想要的结果,因为它将导致无效的JSON。根据json.org

数组是一个有序的值集合。数组以(左括号)并以开头。值由,(逗号)分隔。

因此,您只能在数组中有值。因为要向值添加名称,所以它必须成为一个对象。

如果确实希望将JSON封装在数组中,则需要删除示例"1“和”2“中的第一级名称:

代码语言:javascript
复制
[
    {
        "car": "1",
        "carModel": "model-1",
        "colors": [
            {
                "paintedOn": "2014-11-07",
                "paintedBy": "5"
            },
            {
                "paintedOn": "2014-11-08",
                "paintedBy": "6"
            }
        ]
    },
    {
        "car": "2",
        "carModel": "model-2",
        "colors": [
            {
                "paintedOn": "2014-11-09",
                "paintedBy": "7"
            },
            {
                "paintedOn": "2014-11-10",
                "paintedBy": "8"
            }
        ]
    }
]
票数 2
EN

Stack Overflow用户

发布于 2014-11-11 12:49:41

删除对JSON的转换。此外,PHP中的“声明”并不重要。您仍然可以在程序的过程中分配不同的类型。

票数 0
EN

Stack Overflow用户

发布于 2014-11-11 12:50:51

我认为PHP函数解码在这里应该对您有所帮助。这会将JSON格式转换为数组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26865267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档