首页 > 解决方案 > 自定义查询响应数组

问题描述

我有一个 JSON 响应要根据我们的需要进行定制

响应如下所示,其中包含多个带有数据的数组

但我想整理出像 MAIN 这样的单个类别,并在一个数组中显示所有相关的东西,并在其值中显示

[
  {
    "Main": [
      "Map View"
    ],
    "Reports": [
      "Sensor Data Report"
    ],
    "Configuration": [
      "Region Configuration"
    ],
    "Admin": [
      "Customer Management"
    ]
  },
  {
    "Main": [
      "Map View"
    ],
    "Reports": [
      "Sensor Data Report"
    ],
    "Configuration": [
      "Region Configuration"
    ],
    "Admin": [
      "Device Management"
    ]
  }
]

但我需要这样的东西

{
  "Main": [
    "Dashboard",
    "Devices"
  ],
  "Reports": [
    "Alert Report",
    "MOnthly Reports"
  ],
  "Configuration": [
    "Region Configuration",
    "Device Management"
  ]
}

标签: phparraysjsonsortingarraylist

解决方案


一个选项可能是,因为您的第一个包含数据的多个数组每个条目包含一个项目,所以使用 2 次 aforeach并收集同一键的所有值。

由于您的示例数据包含重复值,您可以使用array_unique

$result = [];
foreach ($arrays as $array)
    foreach ($array as $k => $v)
        array_key_exists($k, $result) ? $result[$k][] = $v[0] : $result[$k] = [$v[0]];

$result = array_map('array_unique', $result);

print_r($result);

看一个php 演示

结果

Array
(
    [Main] => Array
        (
            [0] => Map View
        )

    [Reports] => Array
        (
            [0] => Sensor Data Report
        )

    [Configuration] => Array
        (
            [0] => Region Configuration
        )

    [Admin] => Array
        (
            [0] => Customer Management
            [1] => Device Management
        )

)

推荐阅读