Получить список дочерних категорий из массива. PHP

Подскажите пожалуйста, как преобразовать вот такой массив:

array(4) {
  ["id"]=>
  int(1)
  ["name"]=>
  string(24) "Пользователи"
  ["alias"]=>
  string(5) "users"
  ["childrens"]=>
  array(3) {
    [0]=>
    array(3) {
      ["id"]=>
      int(2)
      ["name"]=>
      string(16) "Создание"
      ["alias"]=>
      string(6) "create"
    }
    [1]=>
    array(4) {
      ["id"]=>
      int(3)
      ["name"]=>
      string(12) "Список"
      ["alias"]=>
      string(4) "list"
      ["childrens"]=>
      array(2) {
        [0]=>
        array(3) {
          ["id"]=>
          int(4)
          ["name"]=>
          string(16) "Активные"
          ["alias"]=>
          string(6) "active"
        }
        [1]=>
        array(3) {
          ["id"]=>
          int(5)
          ["name"]=>
          string(18) "Удаленные"
          ["alias"]=>
          string(7) "deleted"
        }
      }
    }
    [2]=>
    array(3) {
      ["id"]=>
      int(8)
      ["name"]=>
      string(10) "Поиск"
      ["alias"]=>
      string(6) "search"
    }
  }
}

array(4) {
  ["id"]=>
  int(6)
  ["name"]=>
  string(12) "Заявки"
  ["alias"]=>
  string(8) "requests"
  ["childrens"]=>
  array(3) {
    [0]=>
    array(3) {
      ["id"]=>
      int(9)
      ["name"]=>
      string(38) "Заявки на поключение"
      ["alias"]=>
      string(10) "connecting"
    }
    [1]=>
    array(3) {
      ["id"]=>
      int(10)
      ["name"]=>
      string(30) "Заявки на ремонт"
      ["alias"]=>
      string(7) "repairs"
    }
    [2]=>
    array(3) {
      ["id"]=>
      int(11)
      ["name"]=>
      string(28) "Заявки на обход"
      ["alias"]=>
      string(5) "round"
    }
  }
}

array(4) {
  ["id"]=>
  int(7)
  ["name"]=>
  string(12) "Отчёты"
  ["alias"]=>
  string(7) "reports"
  ["childrens"]=>
  array(2) {
    [0]=>
    array(4) {
      ["id"]=>
      int(12)
      ["name"]=>
      string(31) "Отдел маркетинга"
      ["alias"]=>
      string(9) "marketing"
      ["childrens"]=>
      array(3) {
        [0]=>
        array(3) {
          ["id"]=>
          int(15)
          ["name"]=>
          string(34) "Отчёт по списаниям"
          ["alias"]=>
          string(10) "write-offs"
        }
        [1]=>
        array(3) {
          ["id"]=>
          int(16)
          ["name"]=>
          string(32) "Отчёт по расходам"
          ["alias"]=>
          string(5) "costs"
        }
        [2]=>
        array(3) {
          ["id"]=>
          int(17)
          ["name"]=>
          string(25) "Годовой отчёт"
          ["alias"]=>
          string(4) "year"
        }
      }
    }
    [1]=>
    array(4) {
      ["id"]=>
      int(14)
      ["name"]=>
      string(20) "Управление"
      ["alias"]=>
      string(7) "control"
      [0]=>
      array(2) {
        [0]=>
        array(3) {
          ["id"]=>
          int(18)
          ["name"]=>
          string(55) "Отчёт по эффективности работы"
          ["alias"]=>
          string(10) "efficiency"
        }
        [1]=>
        array(3) {
          ["id"]=>
          int(19)
          ["name"]=>
          string(40) "Отчёт по подключениям"
          ["alias"]=>
          string(10) "connecting"
        }
      }
    }
  }
}

В такой

array(4) {
  ["id"]=>
  int(1)
  ["name"]=>
  string(24) "Пользователи"
  ["alias"]=>
  string(5) "users"
  ["childrens"]=> "Создание, список, поиск"
}
array(3) {
      ["id"]=>
      int(2)
      ["name"]=>
      string(16) "Создание"
      ["alias"]=>
      string(6) "create"
    }
array(4) {
      ["id"]=>
      int(3)
      ["name"]=>
      string(12) "Список"
      ["alias"]=>
      string(4) "list"
      ["childrens"]=> "Активные, удаленные"
}

То-есть нужно получить все категории и в childrens записать названия вложенных категорий, не-могу сообразить как это реализовать, начал делать так и застопорился:

<?php

$json = file_get_contents("categories.json");
$categories = json_decode($json, true);


foreach ($categories as $category) {    //Level 1
    $category_id = $category['id'];
    $category_name = $category['name'];
    $category_alias = $category['alias'];
    $category_child = $category['childrens'];

    foreach ($category_child as $child) {   //Level 2
        $child_new_data = $child['childrens'];
        if ($child_new_data !== NULL) {
            foreach ($child_new_data as $child_new) {   //Level 3

            }
            
        }
        else{
            if ($child[0] !== NULL) {
                foreach ($child[0] as $child_3) {

                };
            }       
        }
    }
}

var_export($categories);

array ( 0 => array ( 'id' => 1, 'name' => 'Пользователи', 'alias' => 'users', 'childrens' => array ( 0 => array ( 'id' => 2, 'name' => 'Создание', 'alias' => 'create', ), 1 => array ( 'id' => 3, 'name' => 'Список', 'alias' => 'list', 'childrens' => array ( 0 => array ( 'id' => 4, 'name' => 'Активные', 'alias' => 'active', ), 1 => array ( 'id' => 5, 'name' => 'Удаленные', 'alias' => 'deleted', ), ), ), 2 => array ( 'id' => 8, 'name' => 'Поиск', 'alias' => 'search', ), ), ), 1 => array ( 'id' => 6, 'name' => 'Заявки', 'alias' => 'requests', 'childrens' => array ( 0 => array ( 'id' => 9, 'name' => 'Заявки на поключение', 'alias' => 'connecting', ), 1 => array ( 'id' => 10, 'name' => 'Заявки на ремонт', 'alias' => 'repairs', ), 2 => array ( 'id' => 11, 'name' => 'Заявки на обход', 'alias' => 'round', ), ), ), 2 => array ( 'id' => 7, 'name' => 'Отчёты', 'alias' => 'reports', 'childrens' => array ( 0 => array ( 'id' => 12, 'name' => 'Отдел маркетинга', 'alias' => 'marketing', 'childrens' => array ( 0 => array ( 'id' => 15, 'name' => 'Отчёт по списаниям', 'alias' => 'write-offs', ), 1 => array ( 'id' => 16, 'name' => 'Отчёт по расходам', 'alias' => 'costs', ), 2 => array ( 'id' => 17, 'name' => 'Годовой отчёт', 'alias' => 'year', ), ), ), 1 => array ( 'id' => 14, 'name' => 'Управление', 'alias' => 'control', 0 => array ( 0 => array ( 'id' => 18, 'name' => 'Отчёт по эффективности работы', 'alias' => 'efficiency', ), 1 => array ( 'id' => 19, 'name' => 'Отчёт по подключениям', 'alias' => 'connecting', ), ), ), ), ), )

Ответы (0 шт):