A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 庭院深深深几许 金牌黑马   /  2019-1-4 11:04  /  1606 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

php递归算法处理

[PHP] 纯文本查看 复制代码
//递归处理
    public function recursion($data,$path=0,$flag=1){
        static $arr=array();
        foreach($data as $key=>$val){
            if($val['pid']==$path){
                $val['flag']=$flag;
                $arr[]=$val;
                $this->recursion($data,$val['power_id'],$flag+1);
            }
        }
        return $arr;
    }
、、、、、、、、、、、、、、、、、、、、
<?php echo str_repeat('    ',$val['flag'])?>
<?php echo $val['type_name']?>



/**
 * 查询分类树
 * @param $list
 * @param string $pk
 * @param string $pid
 * @param string $child
 * @param int $root
 * @return array
 */
public static function makeTree($list,$pk='category_id',$pid='pid',$child='_child',$root=0){
    $tree = [];

    $packData = [];

    foreach ($list as  $data) {
        //转换为带有主键id的数组
        $packData[$data[$pk]] = $data;
        //$packData[1]=$data; $packData[2]=$data
    }

    foreach ($packData as $key =>$val){
        if($val[$pid]==$root){
            //代表跟节点
            $tree[] = & $packData[$key];
        }else{
            //找到其父类
            $packData[$val[$pid]][$child][] = & $packData[$key];
        }
    }
    return $tree;
}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马