php递归

    public function tree()
    {
        //这个表示那拿到的数据库里面的内容
        $product=$this->order('catorder','asc')->select();
        return  $this->getTree($product);

    }
    //无限极递归
    public function getTree($data,$pid=0,$level=0){
        static $arr=array();
        foreach($data as $key=>$value){
            if($value['pid'] == $pid){
                $value['level']=$level;     //用来作为在模版进行层级的区分
                $arr[] = $value;            //把内容存进去
                $this->getTree($data,$value['id'],$level+1);    //回调进行无线递归
            }
        }
        return $arr;
    }
function recursionTree($arr,$pid)
{ 
    $list = array();
    foreach($arr as $val){ 
        if($val['pid'] == $pid){ 
            $tmp = recursionTree($arr,$val['id']);
            if($tmp){ 
                $val['son'] = $tmp;
            }
            $list[] = $val;
        }
    }
    return $list;
}


$arr = [
    ['id'=>1,'pid'=>0,'name'=>'1-1'],
    ['id'=>2,'pid'=>1,'name'=>'1-1-2'],
    ['id'=>3,'pid'=>2,'name'=>'1-1-2-3'],
    ['id'=>4,'pid'=>0,'name'=>'1-4'],
    ['id'=>5,'pid'=>4,'name'=>'1-4-5'],
    ['id'=>6,'pid'=>0,'name'=>'1-6'],
];

$tmp = recursionTree($arr,0);
print_r($tmp);
//输出
Array
(
    [0] => Array
        (
            [id] => 1
            [pid] => 0
            [name] => 1-1
            [son] => Array
                (
                    [0] => Array
                        (
                            [id] => 2
                            [pid] => 1
                            [name] => 1-1-2
                            [son] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 3
                                            [pid] => 2
                                            [name] => 1-1-2-3
                                        )

                                )

                        )

                )

        )

    [1] => Array
        (
            [id] => 4
            [pid] => 0
            [name] => 1-4
            [son] => Array
                (
                    [0] => Array
                        (
                            [id] => 5
                            [pid] => 4
                            [name] => 1-4-5
                        )

                )

        )

    [2] => Array
        (
            [id] => 6
            [pid] => 0
            [name] => 1-6
        )

)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 原文博客:煜儿博客大雁塔一共5层,观音对唐僧说,你去扫塔,扫完了给你件绝世无双的袈裟,但是有条件:【必须拿到2楼的...
    半截短袖阅读 407评论 0 1
  • 很多同学在学习递归函数的时候会感到头晕,无法搞清楚递归函数的原理和运行机制,本文将给大家详细讲解递归函数的运行机制...
    Gundy_阅读 1,201评论 2 5
  • 博客新开,什么都没有,先从印象笔记贴一篇以前的笔记
    PHPNOTE阅读 704评论 0 1
  • 1.去官网下载安装包或压缩文件https://www.mongodb.com/download-center2.安...
    阿猫阿狗py阅读 284评论 0 0
  • Garbha Pindasana 胎儿式 Garbha pinda意思是子宫的胎儿 ...
    6b38a4a66238阅读 319评论 0 0

友情链接更多精彩内容