Вывод массива многоуровневого меню

209
03 мая 2018, 07:43

Есть таблица menu с колонками: id, value, id_parent.

В модели:

public function getMenu()
{
    $sql = "SELECT * FROM menu";
    return $this->db->query($sql);
}

В контроллере:

public function adminNavMenu()
{
    $this->data['menu'] = $this->model->getMenu();
    $result = [];
    foreach ($this->data['menu'] as $key => $value) {
        if ($value['id_parent'] == 0) {
            $result[$value['id']] = $value;
        } else {
            $result[$value['id_parent']]['children'][] = $value;
        }
     }
}

Но оно неправильно выводит массив, ниже опубликовал вывод массива. Пытался вывести при помощи цикла или рекурсии, но ничего не получается...

Помогите, пожалуйста, исправить ошибки.

Само меню:

Menu1
Menu2->
       Menu2-1
       Menu2-2
       Menu2-3->
                Menu2-3-1

Неверный вывод после var_dump($result);

Array
(
    [1] => Array
        (
            [id] => 1
            [value] => Menu1
            [id_parent] => 0
        )
    [2] => Array
        (
            [id] => 2
            [value] => Munu2
            [id_parent] => 0
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 3
                            [value] => Menu2-1
                            [id_parent] => 2
                        )
                    [1] => Array
                        (
                            [id] => 4
                            [value] => Menu2-2
                            [id_parent] => 2
                        ) 
                    [2] => Array
                        (
                            [id] => 5
                            [value] => Menu2-3
                            [id_parent] => 2
                        )
                )
        )
    [5] => Array
        (
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 6
                            [value] => Menu2-3-1
                            [id_parent] => 5
                        )
                )
        )
)
READ ALSO
Как избежать jQuery, когда нужен ajax?

Как избежать jQuery, когда нужен ajax?

Мне не нравится использовать jQuery(Сугубо эстетические мотивы и мой перфекционизм заставляют меня избегать фреймворков и писать на чистом...

172
Нужна помощь по одному инструменту [требует правки]

Нужна помощь по одному инструменту [требует правки]

Всем привет, нужна ваше помочи возможно как то скопировать движок этого Инструмента либо если есть у кого нибудь идеи как можно сделать?...

203
Очистка формы html после submit с помощью ajax

Очистка формы html после submit с помощью ajax

У меня есть обычная html форма, которая проходит валидацию на frontend и на backendНа frontend валидация осуществляется при помощи плагина jQuery validate, а на backend...

341
javascript вызов функции до загрузки функции

javascript вызов функции до загрузки функции

подскажите пожалуйста, голова не варит:

214