取消设置不会取消设置数组值

时间:2018-10-29 19:42:17

标签: php arrays foreach unset

我正在尝试从jstree生成的数据构建动态菜单。 Jstree值将存储在数据库中,如下所示:
ID |姓名|上级图标|链接

因此,我已经制定了一种从数据库(行)读取每一行并将其存储在数组中的方法,以便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 [parent] [children] [grandchildren]。 这部分代码可以正常工作,但并没有取消子级和子级值的设置,因此我将其改编。第一次以正确的顺序,然后以亲子身份。

谢谢。

0 个答案:

没有答案