php - 返回数组而不是对象

标签 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 作为期望收集的前端( Backbone )

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

最佳答案

您无法实现您想要的,因为这会导致无效的 JSON。根据json.org :

An array is an ordered collection of values. An array begins with [ (left bracket) and ends with ] (right bracket). Values are separated by , (comma).

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

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

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

关于php - 返回数组而不是对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26865267/

相关文章:

php - 将 Twig 与 react.js 集成

php - 检查数据库列中是否存在部分字符串

javascript - 对循环中的对象数组应用折扣,无论哪个对象的支付值较高?

java - 无法使用 Web 服务的二维对象返回值

javascript - 在普通的 JavaScript 中是否有像prototype.toArray 这样的函数?

php - XHTML、PHP、MySQL、IE 和 mdash 字符

php - 命中 "enter"不会在 IE8 中发布表单

C编程作业中涉及数组的问题

javascript - JS 关联数组 : add new pair

java - 为什么 hashcode() 返回相同的整数?