Unset не сбрасывает значения массива - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь создать динамическое меню из данных, которые я генерирую из jstree. Значения Jstree будут храниться в базе данных следующим образом:
Id | Имя | Родитель | Иконка | Ссылка

Итак, я создал метод для чтения каждой строки из базы данных (propel) и сохранения ее в массиве, чтобы Smarty могла динамически создавать меню.

Это моя функция:

$menu_content = array();
    foreach($result as $key => $r) {
        if($r['Id'] != 1) {
            $Id = $r['Id'];
            $menu_content[$r['Id']] = array(
                "name" => $r['Name'],
                "link" => $r['Link'],
                "icon" => $r['Icon']
            );
            unset($result[$key]);
            foreach($result as $key_children => $c) {
                if($c['Parent'] == $r['Id']) {
                    $menu_content[$r['Id']]['children'][] = array(
                        "name" => $c['Name'],
                        "link" => $c['Link'],
                        "icon" => $c['Icon']
                    );
                    unset($result[$key_children]);
                    $Idc = $c['Id'];
                    foreach($result as $key_grandchild => $cc) {
                        if($cc['Parent'] == $c['Id']) {
                            $menu_content[$r['Id']]['children']['grandchild'][] = array(
                                "name" => $cc['Name'],
                                "link" => $cc['Link'],
                                "icon" => $cc['Icon']
                            );
                            unset($result[$key_grandchild]);
                        }
                    }
                }  
            }
        }

Так что он должен хранить такие значения: $ Menu_content [родитель] [дети] [внуки]. Эта часть кода работает нормально, но она не сбрасывает значения детей и внуков, поэтому я получаю их два. Первый раз в правильном порядке и после этого как родительские дети.

Заранее спасибо.

...