php递归生成树形结构 - 无限分类 - 构建树形结构 - 省市区三级联动

直接上代码 + 示例

<?php/*** php递归生成树形结构 - 无限分类 - 构建树形结构 - 省市区三级联动* * @param array $lists 一维数组,包括不同级别的各行数据* @param int $parentId 目标节点的父类ID (可以是顶级分类的父ID,也可以是任意节点的父ID)* @param string $keyParentId 数组下标 - 父类ID* @param string $keySonId 数组下标 - 父类ID* @param string $keyChildren 数组新增下标 - 子节点下标* * @author Rudon* @link https://rudon.blog.csdn.net/*/function getTree($lists, $parentId = 0, $keyParentId = 'parent_id', $keySonId = 'id', $keyChildren = 'children') {$tree = [];foreach($lists as $k => $v){if(array_key_exists($keySonId, $v) && array_key_exists($keyParentId, $v) && $v[$keyParentId] == $parentId) {$v[$keyChildren] = getTree($lists, $v[$keySonId], $keyParentId, $keySonId, $keyChildren);$tree[] = $v;}}return $tree;}// 示例$rows = array(array('id' => 1, 'parent_id' => 0, 'name' => '河北省'),array('id' => 2, 'parent_id' => 0, 'name' => '北京市'),array('id' => 3, 'parent_id' => 1, 'name' => '邯郸市'),array('id' => 4, 'parent_id' => 2, 'name' => '朝阳区'),array('id' => 5, 'parent_id' => 2, 'name' => '通州区'),array('id' => 6, 'parent_id' => 4, 'name' => '望京'),array('id' => 7, 'parent_id' => 4, 'name' => '酒仙桥'),array('id' => 8, 'parent_id' => 3, 'name' => '永年区'),array('id' => 9, 'parent_id' => 1, 'name' => '武安市'),array('id' => 10, 'parent_id' => 8, 'name' => '永年区镇'),array('id' => 11, 'parent_id' => 0, 'name' => '上海市'));// 获取所有省市区关系$tree = getTree($rows, 0);echo "<pre>";print_r($tree);echo "</pre>";// 获取北京市(ID=2)的各下级// $tree = getTree($rows, 2);// 结果/*** Array([0] => Array([id] => 1[parent_id] => 0[name] => 河北省[children] => Array([0] => Array([id] => 3[parent_id] => 1[name] => 邯郸市[children] => Array([0] => Array([id] => 8[parent_id] => 3[name] => 永年区[children] => Array([0] => Array([id] => 10[parent_id] => 8[name] => 永年区镇[children] => Array())))))[1] => Array([id] => 9[parent_id] => 1[name] => 武安市[children] => Array())))[1] => Array([id] => 2[parent_id] => 0[name] => 北京市[children] => Array([0] => Array([id] => 4[parent_id] => 2[name] => 朝阳区[children] => Array([0] => Array([id] => 6[parent_id] => 4[name] => 望京[children] => Array())[1] => Array([id] => 7[parent_id] => 4[name] => 酒仙桥[children] => Array())))[1] => Array([id] => 5[parent_id] => 2[name] => 通州区[children] => Array())))[2] => Array([id] => 11[parent_id] => 0[name] => 上海市[children] => Array()))* */

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/126859.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Dockerfile搭建LNMP

目录 一、基础环境准备 1、环境前期准备 二、部署nginx&#xff08;容器IP 为 172.18.0.10&#xff09; 1、配置Dockerfile文件 2、配置nginx.conf文件 3、构建镜像、启动镜像 三、部署mysql 1、配置Dockerfile文件 2、配置my.conf文件 3、构建镜像、启动镜像 5、验…

设备上架与调试步骤项目篇

1.设备又哪些常见的调试方法&#xff1f; 2.设备开箱 -> 使用的步骤是什么&#xff1f; 3.开局新设备都要设置哪些功能&#xff1f; -- 工程师&#xff1a;架构设计 项目实施 故障排查 -- 调试设备&#xff1a; -- 1.WEB界面 - 界面调试 - 内容比较少的 主要项目 …

Docker 安装 MongoDB

一、什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库。是一个介于关系数据库和非关系数据库之间的产品&#xff0c;是非关系数据库当中功能最丰富&#xff0c;最像关系数据库的。 二、MongoDB的安装 这里使用docker来安装MongoD 1.docker 拉取mysql镜像 docker pu…

微信小程序开发——自定义堆叠图

先看效果图 点击第一张图片实现折叠&#xff0c;再次点击实现展开 思路 图片容器绑定点击事件获取当前图片索引&#xff0c;触发onTap函数&#xff0c;根据索引判断当前点击的图片是否为第一张&#xff0c;并根据当前的折叠状态来更新每张图片的位置&#xff0c;注意图片向上…

vue模版语法-{{}}/v-text/v-html/v-once

一、{{}}双括号&#xff1a;用于文本渲染 1、 {{变量名}}:data中返回对象的变量名 2、{{js表达式}}:可以直接进行js表达式处理 3、注意&#xff1a;双大括号中不要写等式书写 二、v-text 指令&#xff0c;用于文本渲染 1、为了解决双大括号渲染数据出现闪烁问题 三、v-cloak …

Dubbo3应用开发—Dubbo3注册中心(zookeeper、nacos、consul)的使用

Dubbo3注册中心的使用 zookeeper注册中心的使用 依赖引入 <dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-dependencies-zookeeper-curator5</artifactId><version>${dubbo.version}</version><type>p…

初识链表(7.25)

前面我们学习了顺序表&#xff0c;但顺序表其实存在一些问题 1. 中间/头部的插入删除&#xff0c;时间复杂度为O(N) 2. 增容需要申请新空间&#xff0c;拷贝数据&#xff0c;释放旧空间。会有不小的消耗&#xff08;尤其是异地扩容&#xff09;。 3. 增容一般是呈2倍的增长&am…

项目_数据可视化| 折线图.散点图.随机漫步

安装matplotlib 在正式开始编写程序之前&#xff0c;需要先安装pip、matplotlib模块&#xff0c;苹果系统的安装问题在之前的文章中有相关介绍内容&#xff0c;如果pycharm运行模块报错&#xff0c;可以再次检查是否版本兼容问题。 绘制折线图 调用subplot&#xff08;&#x…

系统03:15min导图复习 文件管理

&#x1f433;前言 图源&#xff1a;文心一格 考研笔记整理&#xff0c;纯复习向&#xff0c;思维导图基本就是全部内容了&#xff0c;不会涉及较深的知识点~~&#x1f95d;&#x1f95d; 第1版&#xff1a;查资料、画思维导图~&#x1f9e9;&#x1f9e9; 编辑&#xff1a; …

unity操作_Camera c#

观察场景中Main Camera 的清除背景Clear Flags 第一种&#xff1a;Skybox天空盒渲染 制作3D游戏使用 第二种&#xff1a;Solid Color 制作2D游戏 第三种&#xff1a;Depth only 多个摄像机叠加渲染 相对重点学会多个摄像机设置Depth only使…

10.07hw

int main() {string str;cout << "输入字符串:";getline(cin,str);int size str.size();int big 0;int small 0;int num 0;int space 0;int other 0;for(int i0;i<size;i){if(str[i]<Z&&str[i]>A){big;}else if(str[i]<z&&st…

YOLOv5入门实践(1)— 基础环境介绍及搭建

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。YOLOv5基础知识入门系列和YOLOv5源码中的参数超详细解析系列学习完成之后&#xff0c;接着就进入YOLOv5入门实践系列了。为了让大家能够清楚地了解如何用YOLOv5去进行实践&#xff0c;本篇文章就简单给大家介绍一下YOLOv5基…