Настройка массива ответа Query - PullRequest
0 голосов
/ 17 июня 2019

У меня есть ответ 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"
  ]
}

1 Ответ

1 голос
/ 17 июня 2019

Один из вариантов может быть, так как ваши первые несколько массивов с данными содержат по одному элементу для каждой записи, это использовать 2 раза foreach и собрать все значения для одного и того же ключа.

В качестве вашего примераданные содержат повторяющиеся значения, вы можете использовать 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 demo

Результат

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
        )

)
...