• 042-PHP使用闭包函数递归无限级分类


    <?php
    //使用闭包函数递归无限级分类
        function demo($array){
            # 用于存储递归后的队列
            $data = [];
        
            # 递归函数
            $func = function (&$array, &$data, &$pid=0) use(&$func){
                foreach ($array as $k=>$v) {
                    if ($v['pid'] == $pid) {
                        $data[] = $v;
                        # 递归自身
                        $func($array, $data, $v['id']);
                    }
                }
            };
        
            # 开始递归
            $func($array, $data);
            return $data;
        }
    
    # 测试下
    $array = array(
        0 => array('id' => 1, 'pid' => 0, 'name' => '安徽省'),
        1 => array('id' => 2, 'pid' => 5, 'name' => '浙江省'),
        2 => array('id' => 3, 'pid' => 2, 'name' => '合肥市'),
        3 => array('id' => 4, 'pid' => 2, 'name' => '长丰县'),
        4 => array('id' => 5, 'pid' => 1, 'name' => '安庆市'),
    );
    
    echo '<pre>';
    var_dump(demo($array));
    echo '</pre>';
    ?>

  • 相关阅读:
    并查集
    结构体字节对齐
    Dijkstra算法(单源最短路径)
    图的遍历
    二叉树的非递归遍历
    浅谈C语言中的联合体
    二叉排序(查找)树
    KMP算法
    C语言文件操作解析(四)
    Trie树
  • 原文地址:https://www.cnblogs.com/tianpan2019/p/10994096.html
Copyright © 2020-2023  润新知