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

###

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

###

原数据:

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

 需实现的树结构格式:

[{
    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;

 

效果

 

转载于:https://www.cnblogs.com/smallyi/p/9942366.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值