php递归实现一维数组转为指定树状结构 --- 省市区处理
###
这两天脑壳痛,一时短路,想不到准备利用递归实现这个需求,最后还是要请教同事,回来自己在实现了一遍,并记录下来
###
原数据:
// {
// 广东省: {
// 广州市: [
// "天河区",
// "从化区",
// "增城区"
// ],
// 深圳市: [
// "南山区",
// "福田区",
// "宝安区"
// ]
// },
// 吉林省: {
// 长春市: [
// "朝阳区"
// ]
// }
// }
需实现的树结构格式:
实现过程:
1.实现一个获取多维数据层数的函数
// 递归获取数组结构的层数
function get_array_level($arr) { $level = 1;
if (is_array($arr)) {
foreach ($arr as $key => $value) { if (!empty($value)) {
$level += 1;
get_array_level($value);
}
}
} return $level;
、
}
2.进行树结构的组装
//转为指定树状结构
function get_array_tree($arr) {
$res_arr = array();
// 获取数组的层次
$level = get_array_level($arr);
if ($level > 1) {
foreach ($arr as $key => $value) {
if (is_array($value)) { $res_arr[] = array(
'value' => $key,
'children' => get_array_tree($value) // 递归返回遍历数据的子数组
);
} else {
$res_arr[] = array(
'value' => $value,
);
} } } return $res_arr; }
打印数组
$arr = get_array_tree($arr);
echo json_encode($arr);die;
效果


php递归实现一维数组转为指定树状结构 --- 省市区处理的更多相关文章
- 树 List Leaves 【用数组模拟了树状结构建树+搜索叶子节点+按照特殊规律输出每个叶子节点】
Given a tree, you are supposed to list all the leaves in the order of top down, and left to right. I ...
- PHP利用递归法获取多级类别的树状数组
数据结构:category(id, pid, name),对应:信息ID,父项ID,类别名 测试数据: $aryCate = array( array('id' => 1, 'pid' => ...
- js List<Map> 将偏平化的数组转为树状结构并排序
数据格式: [ { "id":"d3e8a9d6-e4c6-4dd8-a94f-07733d3c1b59", "parentId":&quo ...
- 使用Map辅助拼装树状结构,消除递归调用
目前菜单或其他树状结构在数据库中的存储,多数是以一个parentid作为关联字段,以一维形式存储.使用时全部查询出来,然后在内存中拼装成树状结构.现在主要涉及的是拼装方法的问题. 一般可以进行 递归调 ...
- oracle 树状结构递归 PL/SQL输出控制 包括空格输出控制
树状结构 存储过程中通过递归构建,类似BBS回帖显示,代码共三段: 建表,插入数据,创建存储过程显示: 1.create table article(id number primary key,con ...
- js 每日一更(数组转换成前端更容易解析的树状结构)
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...
- 树状结构Java模型、层级关系Java模型、上下级关系Java模型与html页面展示
树状结构Java模型.层级关系Java模型.上下级关系Java模型与html页面展示 一.业务原型:公司的组织结构.传销关系网 二.数据库模型 很简单,创建 id 与 pid 关系即可.(pid:pa ...
- lua 怎样输出树状结构的table?
为了让游戏前端数据输出更加条理,做了一个简单树状结构来打印数据. ccmlog.lua local function __tostring(value, indent, vmap) local str ...
- 原生JS实现树状结构列表
树状结构列表,这个技术点之前有写过了,是基于vue讲解,但似乎都没有解决痛点,最基础的原生JS该怎么实现呢? 这篇文章会全面详细的介绍树状结构列表的实现,从数据处理成树状结构,到动态生成dom节点渲染 ...
随机推荐
- Tomcat热部署--start tomcat后就可自动部署war包
使用tomcat图形化界面,需要现在配置文件中设置用户名和密码: 在maven中配置Tomcat插件: root目录下的内容可以直接访问: 跳过测试: 查看端口占用:
- Windows服务器上使用phpstudy部署PHP程序
一.下载并安装PHPStudy 官网地址:http://phpstudy.php.cn/(安装包下载地址:链接:https://pan.baidu.com/s/1WOmbOwmLuUPt3_nmY6- ...
- ASP.net中用到的JWT
1.先通过NuGet添加JWT 2.新建一个JwtHelp类 public class JwtHelp { //私钥 web.config中配置 //"GQDstcKsx0NHjPOuXOY ...
- CSS高度塌陷问题与解决办法
问题描述: 在文档流中,父元素默认被子元素撑开(父多高子多高),一旦子浮动,脱离文档流,父无撑起元素便塌陷,父下的所有元素会上移. (不推荐)可以将父高度写死避免塌陷,但高度写死后,父高度不能自动适应 ...
- day13
今日所学 1,函数的嵌套定义 2,globe nonlocal关键字 3,闭包及闭包的运用场景 4,装饰器 函数的嵌套: 在一个函数的内部定义另一个函数 1,函数2想直接使用1函数的局部变量,可以 ...
- [CQOI2009] 中位数
不错的思维题 传送门:$>here<$ 题意:给出一个N的排列,求出其中有多少个连续子段的中位数是b 数据范围:$N \leq 100000$ $Solution$ 先考虑中位数的意义:一 ...
- 使用Python操作MongoDB
MongoDB简介(摘自:http://www.runoob.com/mongodb/mongodb-intro.html) MongoDB 由C++语言编写,是一个基于分布式文件存储的开源数据库系统 ...
- cyq.data 常见使用方法
配置数据库链接:(这只是其中一种方式) AppConfig.DB.CommandTimeout = 800; AppConfig.DB.DefaultConn = "数据库链接地址" ...
- C# 将前端传来的图片文件分别以大图和缩略图保存
HttpPostedFile pic_upload = Request.Files["file"]; Bitmap bitmap = (Bitmap)System.Drawing. ...
- POJ2975 Nim 【博弈论】
DescriptionNim is a 2-player game featuring several piles of stones. Players alternate turns, and on ...