• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

php递归实现一维数组转为指定树状结构---省市区处理

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

###

这两天脑壳痛,一时短路,想不到准备利用递归实现这个需求,最后还是要请教同事,回来自己在实现了一遍,并记录下来

###

原数据:

// {
// 	广东省: {
// 		广州市: [
// 			"天河区",
// 			"从化区",
// 			"增城区"
// 		],
// 		深圳市: [
// 			"南山区",
// 			"福田区",
// 			"宝安区"
// 		]
// 	},
// 	吉林省: {
// 		长春市: [
// 			"朝阳区"
// 		]
// 	}
// }

 需实现的树结构格式:

[{
    value: "广东省",
    children: [{
        value: "广州市",
        children: [{
            value: "天河区"
        },{
            value: "从化区"
        },{
            value: "增城区"
        }]
    },{
        value: "深圳市",
        children: [{
            value: "南山区"
        },{
            value: "福田区"
        },{
            value: "宝安区"
        }]
    }]
},{
    value: "吉林省",
    children: [{
        value: "长春市",
        children: [{
            value: "朝阳区"
        }]
    }]
}]

  

实现过程:

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;

 

效果

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
nginx下php频繁卡死502发布时间:2022-07-10
下一篇:
php中的list()发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap