PHP递归四种方法

<?php

$data='{"type":"dir_content","dir":"D:\\Documents","content":[{"name":"Tencent Files","mod_time":"2017-12-21 10:00:00","type":"dir"},{"name":"QQ8.9.6.exe","mod_time":"2017-12-21 10:00:00","type":"file"}]}';
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
$data=str_replace('\\','\\\\',$data);
$arr=json_decode($data,true);
print_r($arr['dir']);
foreach ($arr as $k=>$v){

   /* foreach ($arr['content'] as $k1=>$v1){
        echo $v1['name'];
    }*/
}
header("Content-Type: text/html; charset=UTF-8");
print_r($arr);

<?php
//导航栏分类
class Category{
    //组合一维数组
    static public function unlimitedForLevel($cate,$html='--',$pid=0,$level=0){
        //echo 1;
        $arr=array();
        foreach ($cate as $v){
            if ($v['pid']==$pid){
                //根据level来输出$html的个数
                $v['level']=$level+1;
                $v['html']=str_repeat($html, $level);
                $arr[]=$v;

                //递归合并
                $arr=array_merge($arr,self::unlimitedForLevel($cate,$html,$v['id'],$level+1));

            }

        }
        return $arr;

    }
//无限级二(多维数组)
    static public function unlimitedForLayer($cate,$name='child',$pid=0){
        $arr=array();
        foreach ($cate as $v){
            if($v['pid']==$pid){
                //$v['child']=self::unlimitedForLayer($cate,$v['id']);
                $v[$name]=self::unlimitedForLayer($cate,$name,$v['id']);
                $arr[]=$v;

            }

        }
        return $arr;
    }
//可以根据子级id 返回所有的父级id
    static public function getParents($cate,$id){
        $arr=array();
        foreach ($cate as $v){
            if($v['id']==$id){
                $arr[]=$v;
                $arr=array_merge(self::getParents($cate,$v['pid']),$arr);
            }

        }
        //php>>字符串》》字符串处理函数》》substr()
        /*foreach ($cate as $v){
            $v['name'].">>"
            
        }*/
        return $arr;

    }


//传递一个父级id,返回所有子级分类id(只返回id)
    static  public function getChildsId($cate,$pid){
        $arr=array();
        foreach ($cate as $v){
            if($v['pid']==$pid){
                $arr[]=$v['id'];
                $arr=array_merge($arr,self::getChildsId($cate, $v['id']));

            }

        }
        return $arr;
    }
//跟第四种一样,但是返回数组
    static  public function getChilds($cate,$pid){
        $arr=array();
        foreach ($cate as $v){
            if($v['pid']==$pid){
                $arr[]=$v;
                $arr=array_merge($arr,self::getChilds($cate, $v['id']));

            }

        }
        return $arr;
    }
}


?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值