【问题标题】:Return an Array instead of Object返回一个数组而不是对象
【发布时间】:2014-11-11 12:45:54
【问题描述】:

我正在像这样从数据库中获取数据

$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 被声明为 Array 我得到 {} 括号,我怎么能用“Array”括号替换“Object”括号?

更新:我无法删除 json_encode 作为前端(骨干)期望集合

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

【问题讨论】:

  • 您将其编码为 json。 Json 与 {} 一起使用。
  • 但如果我喜欢这个$stmt-&gt;fetchAll(PDO::FETCH_OBJ);,它将返回[...]
  • 你试试json_decode() ??

标签: php arrays object


【解决方案1】:

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

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

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

如果您真的希望将 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"
            }
        ]
    }
]

【讨论】:

    【解决方案2】:

    移除对 JSON 的转换。 PHP中的“声明”也无关紧要。您仍然可以在程序过程中分配不同的类型。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:
        use json_decode($data,true) for convert returned  data in to array.
        

        【讨论】:

          猜你喜欢
          • 2020-05-06
          • 1970-01-01
          • 2016-05-03
          • 2017-05-29
          • 2019-05-18
          • 1970-01-01
          • 1970-01-01
          • 2016-03-06
          • 1970-01-01
          相关资源
          最近更新 更多