变换Json数组

时间:2018-12-17 15:55:21

标签: php json laravel laravel-collection

我的模型正在检索这样的json:

[
    {
      "type": "seat",
      "number": 4
    },
    {
      "type": "seat",
      "number": 8
    },
    {
      "type": "seat",
      "number": 12
    },
    {
      "type": "seat",
      "number": 16
    }
]

但是由于我正在使用的API中编写的代码较差,我需要让上面的json改为:

{
  "4" : [ "{\"number\":\"4\",\"type\":\"seat\"}" ],
  "8" : [ "{\"number\":\"8\",\"type\":\"seat\"}" ],
  "12" : [ "{\"number\":\"12\",\"type\":\"seat\"}" ],
  "16" : [ "{\"number\":\"16\",\"type\":\"seat\"}" ]
}

我想知道如何使用laravel中的集合将第一个示例转换为第二个示例。

1 个答案:

答案 0 :(得分:5)

这似乎很简单:

$data = json_decode($json, true);

collect($data)
    ->mapWithKeys(function ($item) {
        return [$item['number'] => [json_encode($item)]];
    })
    ->toArray();