Построить дерево из плоского массива в codeigniter - PullRequest
0 голосов
/ 05 июня 2019

Я просмотрел интернет и не совсем нашел то, что искал. У меня есть плоский массив с каждым элементом, содержащим «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
                        )
                )

        )

)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...