Я просмотрел интернет и не совсем нашел то, что искал. У меня есть плоский массив с каждым элементом, содержащим «id» и «parent_id». Каждый элемент будет иметь ОДНОГО родителя, но может иметь несколько дочерних элементов. Если parent_id = 0, он считается элементом корневого уровня. Я пытаюсь превратить мой плоский массив в дерево. Образцы, которые я нашел, работают только для ядра php. Потому что в codeigniter рекурсивная не qorking
function buildTree(array &$elements, $parentId = 0) {
$branch = array();
foreach ($elements as $element) {
if ($element['parent_id'] == $parentId) {
$children = buildTree($elements, $element['id']);
if ($children) {
$element['children'] = $children;
}
$branch[$element['id']] = $element;
unset($elements[$element['id']]);
}
}
return $branch;
}
Массив My Flat равен
Array
(
[1] => Array
(
[id] => 1
[parent_id] => 0
[permission_category] => Listing
[3] => Array
(
[id] => 3
[parent_id] => 1
[permission_category] => Tour
)
[4] => Array
(
[id] => 4
[parent_id] => 1
[permission_category] => Activity
)
[12] => Array
(
[id] => 12
[parent_id] => 0
[permission_category] => Bookings
[parent_permission_category] =>
)
[13] => Array
(
[id] => 13
[parent_id] => 12
[permission_category] => Activity Bookings
)
[14] => Array
(
[id] => 14
[parent_id] => 12
[permission_category] => Tour Bookings
)
);
Показывается только один родительский ребенок
Array
(
[1] => Array
(
[id] => 1
[parent_id] => 0
[permission_category] => Listing
[children] => Array
(
[3] => Array
(
[id] => 3
[parent_id] => 1
[permission_category] => Tour
)
[4] => Array
(
[id] => 4
[parent_id] => 1
[permission_category] => Activity
)
)
)
)