微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

即使在取消设置后,数组也没有在 foreach 中设置正确的表名值

如何解决即使在取消设置后,数组也没有在 foreach 中设置正确的表名值

我有菜单表,我在其中存储了所有菜单,并希望在其父菜单下一次性显示所有菜单。为此,我正在组织一个可以在视图文件中使用的数组。

我从数据库获取的数据采用这种格式

        Array
        (
            [0] => Array
                (
                    [id] => 1
                    [parent_menu_id] => 1
                    [tbl_name] => jobs
                    [menu_name] => Create Jobs
                )

            [1] => Array
                (
                    [id] => 2
                    [parent_menu_id] => 1
                    [tbl_name] => jobs
                    [menu_name] => Show Jobs
                )

            [3] => Array
                (
                    [id] => 4
                    [parent_menu_id] => 4
                    [tbl_name] => customers
                    [menu_name] => Create Customers
                )
            [4] => Array
                (
                    [id] => 5
                    [parent_menu_id] => 4
                    [tbl_name] => Customers
                    [menu_name] => Show Customers 
                )

        )

我想要实现的格式是这样的。

    Array
    (
        [0] => Array
            (
                [tbl_name] => jobs
                [0] => Array
                    (
                        [menu_name] => Create Jobs
                        [route] => jobs.create
                    )

                [1] => Array
                    (
                        [menu_name] => Show Jobs
                        [route] => jobs.assigned_jobs
                    )

                [2] => Array
                    (
                        [menu_name] => Show All Jobs
                        [route] => jobs.index
                    )

            )

        [1] => Array
            (
                [tbl_name] => customers
                [0] => Array
                    (
                        [menu_name] => Create Customers
                        [route] => customers.create
                    )

                [1] => Array
                    (
                        [menu_name] => Show Customers
                        [route] => customers.show
                    )

            )

    )

我面临的唯一问题是它重复表名 [tbl_name] => jobs,即使我在循环中取消了这个设置,你可以在我的代码中看到。

Array
    (
        [0] => Array
            (
                [tbl_name] => jobs
                [0] => Array
                    (
                        [menu_name] => Create Jobs
                        [route] => jobs.create
                    )

                [1] => Array
                    (
                        [menu_name] => Show Jobs
                        [route] => jobs.assigned_jobs
                    )

                [2] => Array
                    (
                        [menu_name] => Show All Jobs
                        [route] => jobs.index
                    )

            )

        [1] => Array
            (
                [tbl_name] => jobs
            )

        [2] => Array
            (
                [tbl_name] => jobs
            )

        [3] => Array
            (
                [tbl_name] => customers
                [0] => Array
                    (
                        [menu_name] => Create Customers
                        [route] => customers.create
                    )

                [1] => Array
                    (
                        [menu_name] => Show Customers
                        [route] => customers.show
                    )

            )

        [4] => Array
            (
                [tbl_name] => Customers
            )
    )

代码

    $rec = menu::all();
$rec = $rec->toArray();

$results = [];
$results1 = [];


foreach ($rec as $key => $value) 
{

    $results['tbl_name'] = $value['tbl_name'];

    foreach ($rec as $kk => $vv)
    {
        if($vv['parent_menu_id'] == $value['id'])
        {
            $results[] = ['menu_name' => $vv['menu_name'],'route' => $vv['route']];
            unset($rec[$kk]);
        }            
    }
        array_values($rec);            
        $results1[] = $results;
        $results = [];            
}

解决方法

我昨晚修好了

public function sidebar_menu()
{

$rec = menu::all();
$rec = $rec->toArray();

$res1 = [];
$res2 = [];


foreach ($rec as $key => $value) 
{
    foreach ($rec as $kk => $vv)
    {
        if($vv['parent_menu_id'] == $value['id'])
        {
            $res1['tbl_name'] = $value['tbl_name'];
            $res1[] = ['menu_name' => $vv['menu_name'],'route' => $vv['route']];
        }            
    }
    
    if(!empty($res1))
    {
        $res2[] = $res1;
        $res1 = [];        
      }
   }
   return $res2;
  }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。