变换 Json 数组

Transform Json Array

我有一个 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.

中的集合将第一个示例转换为看起来像第二个示例

这看起来很简单:

$data = json_decode($json, true);

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