查找子孙树

$arr=[
    ['id' => 1, 'cname'=>'电脑','pid'=>0],
    ['id' => 2, 'cname'=>'手机','pid'=>1],
    ['id' => 3, 'cname'=>'生活','pid'=>2],
    ['id' => 4, 'cname'=>'游戏','pid'=>3],
    ['id' => 5, 'cname'=>'体育','pid'=>4],
    ['id' => 6, 'cname'=>'明星','pid'=>1],
    ['id' => 7, 'cname'=>'爱好','pid'=>0],
    ['id' => 8, 'cname'=>'艺术','pid'=>0],
];
 
//无限查找子孙树
//放入父亲的id 查找所有子类
function subtree($arr,$id=0,$lev=1){
            static$subs =array();
       foreach ($arr as $v) {
          if($v['pid']==$id){
                $v['lev']=$lev;
                $subs[]=$v;
                subtree($arr,$v['id'],$lev+1);
            }
      }
    return $subs;
 
}
 
//P(subtree($arr ,4));
// foreach (subtree($arr ,4)as $v) {
// echo str_repeat('<-',$v['lev']).$v['cname'].'<br>';
// }
 
 
//查找族谱数
//放入儿子的id 查找所有父辈
function family($arr,$id){
        $tree = [];
            foreach($arr as $v){
                if($v['id']==$id){
                    $tree[]=$v;
                    if($v['pid']>0){
                        $tree=array_merge($tree,family($arr,$v['pid']));
                    }
                }
            }
        return $tree;
}
 
//p(family($arr,8));

 //使用range 建立有序的数值数组;   arra_sum  求和数组

function nm($n){
  return array_sum(range(1,$n));
}
 
 
 /**
    *php弹出新窗口
    *
    *$name 弹窗窗口文件地址
    *$page 参数
    */
function open($name,$page=NULL){
    $page =isset($page)? $name.'?'.$page $name ;
    echo" <script language='javascript'>
    javascript:void(window.open('".$name."','newframe','top=150,left=200,width=600,height=300 '))
    </script>";
}
function aa($arr){
    if(!is_array($arr)){
        echo "你传入的不是数组";
        return false;
    }
        foreach ($arr as $key=>$v){
            if(is_array($v)){
                aa($v);
            }else{
                echo $v,$key.'<br>';
            }
        }
}
aa($arr);
 

posted on 2016-12-27 14:48  炊厨  阅读(220)  评论(0)    收藏  举报

导航