zoukankan      html  css  js  c++  java
  • 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;

    效果

  • 相关阅读:
    git 好文引流
    无法访问Swagger 或 druid面板无法访问 #报异常
    MachineLearning入门-7(数据理解)
    MachineLearning入门-6(数据导入)
    MachineLearning入门-5(Python和Scipy简介)
    百度PaddlePaddle入门-10(数据处理)
    百度PaddlePaddle入门-9(建模)
    百度PaddlePaddle入门-8(模型探讨)
    MachineLearning入门-4(理解数据集)
    百度PaddlePaddle入门-7 (Numpy的应用)
  • 原文地址:https://www.cnblogs.com/smallyi/p/9942366.html
Copyright © 2011-2022 走看看