Получить список дочерних категорий из массива. 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', ), ), ), ), ), )