通过给定带上级的二维数组生成无限层级应用

  1. 查询应用得到带pid的二维数组
slect id,pid,name from departments order by id asc;
// 得到数组
$items = [
    ['id' => 1, 'pid' => 0, 'name' => '销售部'],
    ['id' => 2, 'pid' => 0, 'name' => '技术部'],
    ['id' => 3, 'pid' => 1, 'name' => '销售1部'],
    ['id' => 4, 'pid' => 3, 'name' => '销售小1部'],
    ['id' => 6, 'pid' => 4, 'name' => '销售小小1部'],
    ['id' => 5, 'pid' => 1, 'name' => '销售2部'],
    ['id' => 7, 'pid' => 2, 'name' => '技术1部'],
];

  1. 构建应用
// 2. 通过部门数据构建带层级的数据
function buildTreeMenu($items,$root = 0){
    $tree     = [];
    $packData = [];
    foreach ($items as $data) {
        $packData[$data["id"]] = $data;
    }
    foreach ($packData as $key => $val) {
        if ($val["pid"] == $root) {
            //代表跟节点, 重点一
            $tree[] = &$packData[$key];
        } else {
            //找到其父类,重点二
            $packData[$val["pid"]]["childs"][] = &$packData[$key];
        }
    }
    return $tree;
}
var_dump(buildTreeMenu($items));
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一. Java基础部分.................................................
    wy_sure阅读 9,287评论 0 11
  • 数组总共有22种方法,本文将其分为对象继承方法、数组转换方法、栈和队列方法、数组排序方法、数组拼接方法、创建子数组...
    Sachie阅读 4,451评论 0 7
  • 程序设计中常使用树型结构来表征某些数据的关联关系,如上下级、栏目结构、商品分类、菜单、回复等。 分类的层级关系可以...
    JunChow520阅读 9,525评论 4 3
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,670评论 0 4
  • 这世界要是没有爱情,它在我们心中还会有什么意义!这就如一盏没有亮光的走马灯。—— 歌德 每个人心中都有着对美好爱情...
    爱的解语草阅读 3,666评论 0 0

友情链接更多精彩内容