@Speakea1y1289

Как рекурсией пройтись по массиву с категориями и в каждой категории получить элементы ["id"], ["parent"], ["name"]?

Добрый вечер. Имеется следующий массив:
47f3b5bb02.png
В каждой категории ["category"] есть атрибуты ["@attributes"], в которых присутствуют ["id"], ["parent"], ["name"] и т.д.
Задача - Рекурсией сделать обход по всему массиву и для каждой категории вывести id, parent и name, причём в дочерних категориях (со вложенностью - 1) элемент ["parent"] мы не учитываем и не выводим. Как это можно сделать?
  • Вопрос задан
  • 194 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Catrinblaidd
Вы бы текстом скопировали кусок структуры, а не картинкой. Кто же захочет разбираться?

Если структура именно такая...
code
multimap($arr);

function multimap($array, $level = 0) {
  $result = [];
  foreach ($array as $key => $data) {
    foreach ($data as $inner) {
      $result[$key] = [
        'id' => $inner['@attributes']['id'],
        'name' => $inner['@attributes']['name']
      ];
      if ($level == 0) {
        $result[$key]['parent'] = $inner['@attributes']['parent'];
      }
      unset($inner['@attributes']);
      $result = \array_merge($result, multimap($inner, $level+1));
    }
  }
  return $result;
}


Как вы живёте с такими массивами?)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы