返回一个Array而不是Object

时间:2014-11-11 12:45:55

标签: php arrays object

我从像这样的数据库中获取数据

$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));

结果我得到了

{"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被声明为数组我得到{}括号,我怎么能用“数组”括号替换“对象”括号?

更新:我无法移除json_encode作为前端(骨干)期待收藏

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

4 个答案:

答案 0 :(得分:2)

你无法达到你想要的效果,因为它会导致无效的JSON。根据{{​​3}}:

  

数组是有序的值集合。数组以[(左括号)开头,以]结尾(右括号)。值以(逗号)分隔。

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

如果您真的希望将JSON包装在数组中,则需要删除第一级名称,在您的示例中&#34; 1&#34;和&#34; 2&#34;:

[
    {
        "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"
            }
        ]
    }
]

答案 1 :(得分:0)

删除转换为JSON。还&#34;声明&#34;在PHP中并不重要。您仍然可以在程序过程中指定不同的类型。

答案 2 :(得分:0)

我认为PHP函数json_decode应该在这里帮助你。这会将JSON格式转换为数组。

答案 3 :(得分:0)

use json_decode($data,true) for convert returned  data in to array.