php - 求教二维数组转多维数组的函数

查看:75
本文介绍了php - 求教二维数组转多维数组的函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

php查询显示数据库中的菜单表的数据,生成二维数据,我想通过数组处理,把子菜单作为父菜单的一个键值进行组合,哪位帮我实现一下,非常感谢!简单的说就是下面的数组重新组合成后面的.

原数组

 Array
(
    [0] => Array
        (
            [id] => 1
            [pid] => 0
            [name] => /Admin/Index/home
            [title] => 管理首页
            [type] => 1
            [icon] => clone
            [status] => 1
            [condition] => 
            [sort] => 1
        )

    [1] => Array
        (
            [id] => 14
            [pid] => 13
            [name] => /Admin/Cate/index
            [title] => 分类管理
            [type] => 1
            [icon] => clone
            [status] => 1
            [condition] => 
            [sort] => 1
        )

    [2] => Array
        (
            [id] => 3
            [pid] => 2
            [name] => /Admin/Set/webset
            [title] => 系统设置
            [type] => 1
            [icon] => mobile
            [status] => 1
            [condition] => 
            [sort] => 1
        )

    [3] => Array
        (
            [id] => 21
            [pid] => 20
            [name] => /Admin/Other/comment
            [title] => 评论管理
            [type] => 1
            [icon] => user
            [status] => 1
            [condition] => 
            [sort] => 1
        )

    [4] => Array
        (
            [id] => 15
            [pid] => 13
            [name] => /Admin/Cate/add
            [title] => 分类添加
            [type] => 1
            [icon] => plus
            [status] => 1
            [condition] => 
            [sort] => 2
        )

    [5] => Array
        (
            [id] => 22
            [pid] => 20
            [name] => /Admin/Other/number
            [title] => 注册码管理
            [type] => 1
            [icon] => bars
            [status] => 1
            [condition] => 
            [sort] => 2
        )

    [6] => Array
        (
            [id] => 4
            [pid] => 2
            [name] => /Admin/Set/user
            [title] => 用户管理
            [type] => 1
            [icon] => users
            [status] => 1
            [condition] => 
            [sort] => 2
        )

    [7] => Array
        (
            [id] => 2
            [pid] => 0
            [name] => 
            [title] => 网站设置
            [type] => 1
            [icon] => shopping-cart
            [status] => 1
            [condition] => 
            [sort] => 2
        )

    [8] => Array
        (
            [id] => 23
            [pid] => 20
            [name] => /Admin/Other/gbook
            [title] => 留言管理
            [type] => 1
            [icon] => send-o
            [status] => 1
            [condition] => 
            [sort] => 3
        )

    [9] => Array
        (
            [id] => 16
            [pid] => 13
            [name] => /Admin/Info/index
            [title] => 信息管理
            [type] => 1
            [icon] => check-square
            [status] => 1
            [condition] => 
            [sort] => 3
        )

    [10] => Array
        (
            [id] => 13
            [pid] => 0
            [name] => 
            [title] => 内容管理
            [type] => 1
            [icon] => comments-o
            [status] => 1
            [condition] => 
            [sort] => 3
        )

    [11] => Array
        (
            [id] => 5
            [pid] => 2
            [name] => /Admin/Set/email
            [title] => 邮件设置
            [type] => 1
            [icon] => weixin
            [status] => 1
            [condition] => 
            [sort] => 3
        )

    [12] => Array
        (
            [id] => 6
            [pid] => 2
            [name] => /Admin/Set/mysql
            [title] => 数据库设置
            [type] => 1
            [icon] => thumbs-up
            [status] => 1
            [condition] => 
            [sort] => 4
        )

    [13] => Array
        (
            [id] => 20
            [pid] => 0
            [name] => 
            [title] => 扩展功能
            [type] => 1
            [icon] => cubes
            [status] => 1
            [condition] => 
            [sort] => 4
        )

    [14] => Array
        (
            [id] => 17
            [pid] => 13
            [name] => /Admin/Info/infoadd
            [title] => 信息添加
            [type] => 1
            [icon] => users
            [status] => 1
            [condition] => 
            [sort] => 4
        )

    [15] => Array
        (
            [id] => 24
            [pid] => 20
            [name] => /Admin/Tpl/index
            [title] => 模板管理
            [type] => 1
            [icon] => users
            [status] => 1
            [condition] => 
            [sort] => 4
        )

    [16] => Array
        (
            [id] => 25
            [pid] => 20
            [name] => /Admin/Other/linkindex
            [title] => 链接管理
            [type] => 1
            [icon] => weixin
            [status] => 1
            [condition] => 
            [sort] => 5
        )

    [17] => Array
        (
            [id] => 18
            [pid] => 13
            [name] => /Admin/Info/page
            [title] => 单页管理
            [type] => 1
            [icon] => cubes
            [status] => 1
            [condition] => 
            [sort] => 5
        )

    [18] => Array
        (
            [id] => 29
            [pid] => 0
            [name] => /Admin/Index/delcache
            [title] => 删除缓存
            [type] => 1
            [icon] => cog
            [status] => 1
            [condition] => 
            [sort] => 5
        )

    [19] => Array
        (
            [id] => 7
            [pid] => 2
            [name] => /Admin/Data/backupform
            [title] => 数据库备份
            [type] => 1
            [icon] => cog
            [status] => 1
            [condition] => 
            [sort] => 5
        )

    [20] => Array
        (
            [id] => 26
            [pid] => 20
            [name] => /Admin/Other/linkadd
            [title] => 链接添加
            [type] => 1
            [icon] => users
            [status] => 1
            [condition] => 
            [sort] => 6
        )

    [21] => Array
        (
            [id] => 30
            [pid] => 0
            [name] => /Admin/Lognn/logout
            [title] => 退出登录
            [type] => 1
            [icon] => refresh
            [status] => 1
            [condition] => 
            [sort] => 6
        )

    [22] => Array
        (
            [id] => 19
            [pid] => 13
            [name] => /Admin/Info/pageadd
            [title] => 单页添加
            [type] => 1
            [icon] => book
            [status] => 1
            [condition] => 
            [sort] => 6
        )

    [23] => Array
        (
            [id] => 8
            [pid] => 2
            [name] => /Admin/Set/url
            [title] => URL模式设置
            [type] => 1
            [icon] => refresh
            [status] => 1
            [condition] => 
            [sort] => 6
        )

    [24] => Array
        (
            [id] => 9
            [pid] => 2
            [name] => /Admin/Set/theme
            [title] => 主题设置
            [type] => 1
            [icon] => bars
            [status] => 1
            [condition] => 
            [sort] => 7
        )

    [25] => Array
        (
            [id] => 27
            [pid] => 20
            [name] => /Admin/Notice/index
            [title] => 广告管理
            [type] => 1
            [icon] => weixin
            [status] => 1
            [condition] => 
            [sort] => 7
        )

    [26] => Array
        (
            [id] => 10
            [pid] => 2
            [name] => /Admin/Set/image
            [title] => 图片上传设置
            [type] => 1
            [icon] => th
            [status] => 1
            [condition] => 
            [sort] => 8
        )

    [27] => Array
        (
            [id] => 28
            [pid] => 20
            [name] => /Admin/Index/sitemap
            [title] => sitemap生成
            [type] => 1
            [icon] => thumbs-up
            [status] => 1
            [condition] => 
            [sort] => 8
        )

    [28] => Array
        (
            [id] => 11
            [pid] => 2
            [name] => /Admin/Set/path
            [title] => 相关路径设置
            [type] => 1
            [icon] => check-square
            [status] => 1
            [condition] => 
            [sort] => 9
        )

    [29] => Array
        (
            [id] => 12
            [pid] => 2
            [name] => /Admin/Amenu/index
            [title] => 后台菜单管理
            [type] => 1
            [icon] => recycle
            [status] => 1
            [condition] => 
            [sort] => 10
        )

)

  Array
(
    [0] => Array
        (
            [id] => 1
            [pid] => 0
            [name] => /Admin/Index/home
            [title] => 管理首页
            [type] => 1
            [icon] => clone
            [status] => 1
            [condition] => 
            [sort] => 1
        )

    [1] => Array
        (
            [id] => 2
            [pid] => 0
            [name] => 
            [title] => 网站设置
            [type] => 1
            [icon] => shopping-cart
            [status] => 1
            [condition] => 
            [sort] => 2
            [submenu] => Array
                (
                    [0] => Array
                        (
                            [id] => 3
                            [pid] => 2
                            [name] => /Admin/Set/webset
                            [title] => 系统设置
                            [type] => 1
                            [icon] => mobile
                            [status] => 1
                            [condition] => 
                            [sort] => 1
                        )

                    [1] => Array
                        (
                            [id] => 4
                            [pid] => 2
                            [name] => /Admin/Set/user
                            [title] => 用户管理
                            [type] => 1
                            [icon] => users
                            [status] => 1
                            [condition] => 
                            [sort] => 2
                        )

                    [2] => Array
                        (
                            [id] => 5
                            [pid] => 2
                            [name] => /Admin/Set/email
                            [title] => 邮件设置
                            [type] => 1
                            [icon] => weixin
                            [status] => 1
                            [condition] => 
                            [sort] => 3
                        )

                    [3] => Array
                        (
                            [id] => 6
                            [pid] => 2
                            [name] => /Admin/Set/mysql
                            [title] => 数据库设置
                            [type] => 1
                            [icon] => thumbs-up
                            [status] => 1
                            [condition] => 
                            [sort] => 4
                        )

                    [4] => Array
                        (
                            [id] => 7
                            [pid] => 2
                            [name] => /Admin/Data/backupform
                            [title] => 数据库备份
                            [type] => 1
                            [icon] => cog
                            [status] => 1
                            [condition] => 
                            [sort] => 5
                        )

                    [5] => Array
                        (
                            [id] => 8
                            [pid] => 2
                            [name] => /Admin/Set/url
                            [title] => URL模式设置
                            [type] => 1
                            [icon] => refresh
                            [status] => 1
                            [condition] => 
                            [sort] => 6
                        )

                    [6] => Array
                        (
                            [id] => 9
                            [pid] => 2
                            [name] => /Admin/Set/theme
                            [title] => 主题设置
                            [type] => 1
                            [icon] => bars
                            [status] => 1
                            [condition] => 
                            [sort] => 7
                        )

                    [7] => Array
                        (
                            [id] => 10
                            [pid] => 2
                            [name] => /Admin/Set/image
                            [title] => 图片上传设置
                            [type] => 1
                            [icon] => th
                            [status] => 1
                            [condition] => 
                            [sort] => 8
                        )

                    [8] => Array
                        (
                            [id] => 11
                            [pid] => 2
                            [name] => /Admin/Set/path
                            [title] => 相关路径设置
                            [type] => 1
                            [icon] => check-square
                            [status] => 1
                            [condition] => 
                            [sort] => 9
                        )

                    [9] => Array
                        (
                            [id] => 12
                            [pid] => 2
                            [name] => /Admin/Amenu/index
                            [title] => 后台菜单管理
                            [type] => 1
                            [icon] => recycle
                            [status] => 1
                            [condition] => 
                            [sort] => 10
                        )

                )

        )

    [2] => Array
        (
            [id] => 13
            [pid] => 0
            [name] => 
            [title] => 内容管理
            [type] => 1
            [icon] => comments-o
            [status] => 1
            [condition] => 
            [sort] => 3
            [submenu] => Array
                (
                    [0] => Array
                        (
                            [id] => 14
                            [pid] => 13
                            [name] => /Admin/Cate/index
                            [title] => 分类管理
                            [type] => 1
                            [icon] => clone
                            [status] => 1
                            [condition] => 
                            [sort] => 1
                        )

                    [1] => Array
                        (
                            [id] => 15
                            [pid] => 13
                            [name] => /Admin/Cate/add
                            [title] => 分类添加
                            [type] => 1
                            [icon] => plus
                            [status] => 1
                            [condition] => 
                            [sort] => 2
                        )

                    [2] => Array
                        (
                            [id] => 16
                            [pid] => 13
                            [name] => /Admin/Info/index
                            [title] => 信息管理
                            [type] => 1
                            [icon] => check-square
                            [status] => 1
                            [condition] => 
                            [sort] => 3
                        )

                    [3] => Array
                        (
                            [id] => 17
                            [pid] => 13
                            [name] => /Admin/Info/infoadd
                            [title] => 信息添加
                            [type] => 1
                            [icon] => users
                            [status] => 1
                            [condition] => 
                            [sort] => 4
                        )

                    [4] => Array
                        (
                            [id] => 18
                            [pid] => 13
                            [name] => /Admin/Info/page
                            [title] => 单页管理
                            [type] => 1
                            [icon] => cubes
                            [status] => 1
                            [condition] => 
                            [sort] => 5
                        )

                    [5] => Array
                        (
                            [id] => 19
                            [pid] => 13
                            [name] => /Admin/Info/pageadd
                            [title] => 单页添加
                            [type] => 1
                            [icon] => book
                            [status] => 1
                            [condition] => 
                            [sort] => 6
                        )

                )

        )

    [3] => Array
        (
            [id] => 20
            [pid] => 0
            [name] => 
            [title] => 扩展功能
            [type] => 1
            [icon] => cubes
            [status] => 1
            [condition] => 
            [sort] => 4
            [submenu] => Array
                (
                    [0] => Array
                        (
                            [id] => 21
                            [pid] => 20
                            [name] => /Admin/Other/comment
                            [title] => 评论管理
                            [type] => 1
                            [icon] => user
                            [status] => 1
                            [condition] => 
                            [sort] => 1
                        )

                    [1] => Array
                        (
                            [id] => 22
                            [pid] => 20
                            [name] => /Admin/Other/number
                            [title] => 注册码管理
                            [type] => 1
                            [icon] => bars
                            [status] => 1
                            [condition] => 
                            [sort] => 2
                        )

                    [2] => Array
                        (
                            [id] => 23
                            [pid] => 20
                            [name] => /Admin/Other/gbook
                            [title] => 留言管理
                            [type] => 1
                            [icon] => send-o
                            [status] => 1
                            [condition] => 
                            [sort] => 3
                        )

                    [3] => Array
                        (
                            [id] => 24
                            [pid] => 20
                            [name] => /Admin/Tpl/index
                            [title] => 模板管理
                            [type] => 1
                            [icon] => users
                            [status] => 1
                            [condition] => 
                            [sort] => 4
                        )

                    [4] => Array
                        (
                            [id] => 25
                            [pid] => 20
                            [name] => /Admin/Other/linkindex
                            [title] => 链接管理
                            [type] => 1
                            [icon] => weixin
                            [status] => 1
                            [condition] => 
                            [sort] => 5
                        )

                    [5] => Array
                        (
                            [id] => 26
                            [pid] => 20
                            [name] => /Admin/Other/linkadd
                            [title] => 链接添加
                            [type] => 1
                            [icon] => users
                            [status] => 1
                            [condition] => 
                            [sort] => 6
                        )

                    [6] => Array
                        (
                            [id] => 27
                            [pid] => 20
                            [name] => /Admin/Notice/index
                            [title] => 广告管理
                            [type] => 1
                            [icon] => weixin
                            [status] => 1
                            [condition] => 
                            [sort] => 7
                        )

                    [7] => Array
                        (
                            [id] => 28
                            [pid] => 20
                            [name] => /Admin/Index/sitemap
                            [title] => sitemap生成
                            [type] => 1
                            [icon] => thumbs-up
                            [status] => 1
                            [condition] => 
                            [sort] => 8
                        )

                )

        )

    [4] => Array
        (
            [id] => 29
            [pid] => 0
            [name] => /Admin/Index/delcache
            [title] => 删除缓存
            [type] => 1
            [icon] => cog
            [status] => 1
            [condition] => 
            [sort] => 5
        )

    [5] => Array
        (
            [id] => 30
            [pid] => 0
            [name] => /Admin/Lognn/logout
            [title] => 退出登录
            [type] => 1
            [icon] => refresh
            [status] => 1
            [condition] => 
            [sort] => 6
        )

)

解决方案

$data = array(
    array('id' => 1, 'pid' => 0),
    array('id' => 2, 'pid' => 0),
    array('id' => 3, 'pid' => 1),
    array('id' => 4, 'pid' => 1),
    array('id' => 5, 'pid' => 3),
);
$tree = [];
foreach($data as $v){
    $tree[$v['id']] = $v;
    $tree[$v['id']]['submenu'] = array();
}

foreach ($tree as $k=>$item) {
    if ($item['pid'] != 0) {
        $tree[$item['pid']]['submenu'][] = &$tree[$k];
    }
}
print_r($tree);
//输出
Array
(
    [1] => Array
        (
            [id] => 1
            [pid] => 0
            [submenu] => Array
                (
                    [0] => Array
                        (
                            [id] => 3
                            [pid] => 1
                            [submenu] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 5
                                            [pid] => 3
                                            [submenu] => Array
                                                (
                                                )

                                        )

                                )

                        )

                    [1] => Array
                        (
                            [id] => 4
                            [pid] => 1
                            [submenu] => Array
                                (
                                )

                        )

                )

        )

    [2] => Array
        (
            [id] => 2
            [pid] => 0
            [submenu] => Array
                (
                )

        )

    [3] => Array
        (
            [id] => 3
            [pid] => 1
            [submenu] => Array
                (
                    [0] => Array
                        (
                            [id] => 5
                            [pid] => 3
                            [submenu] => Array
                                (
                                )

                        )

                )

        )

    [4] => Array
        (
            [id] => 4
            [pid] => 1
            [submenu] => Array
                (
                )

        )

    [5] => Array
        (
            [id] => 5
            [pid] => 3
            [submenu] => Array
                (
                )

        )

)

这篇关于php - 求教二维数组转多维数组的函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆