zoukankan      html  css  js  c++  java
  • PHP-无限级分类(迭代法创建)


    $area = array( array('id'=>1,'name'=>'安徽','parent'=>0), array('id'=>2,'name'=>'海淀','parent'=>7), array('id'=>3,'name'=>'濉溪县','parent'=>5), array('id'=>4,'name'=>'昌平','parent'=>7), array('id'=>5,'name'=>'淮北','parent'=>1), array('id'=>6,'name'=>'朝阳','parent'=>7), array('id'=>7,'name'=>'北京','parent'=>0), array('id'=>8,'name'=>'上地','parent'=>2) );

    #找父栏目、父父栏目#

    function parenttree($arr,$id){
                $par_arr = array();
                //var_dump($id);
                while($id !== 0){//外层循环的作用:0表示最顶层的栏目 等于0就表示无父栏目/父父栏目 只要不等于0就表示有上级目录 则循环
                 foreach($arr as $v){//内层循环的作用:遍历数组查找出来$id对应的值  若找到了  该值就是它自身(第一次就是它自己)和父栏目/父父栏目..然后存入数组并终止循环(break)
                       if($v['id'] == $id){
                           $par_arr[] = $v;
                           $id = $v['parent'];
                           break;
                       }
                 }             
                }
                return $par_arr;
    }

    #找子孙栏目#

    function subtree($arr,$parent=0){
            $task = array($parent);//创建任务表
            $subs = array();//存子孙栏目的数组
            while(!empty($task))//如果任务表不为空 就表示要做任务
            {
                $flag = false;//默认没找到子树
                foreach($arr as $k=>$v){
                     if($v['parent'] == $parent){
                            $subs [] = $v;
                            array_push($task,$v['id']);//借助栈 把新的地区的id压入栈
                            $parent = $v['id'];
                            unset($arr[$k]);//把找到的单元unset掉
                            $flag = true;
                     }
                }
                if(!$flag){//表示没找到子树
                    array_pop($task);
                    $parent = end($task);
                    
                }
                /*echo '<pre>';
                print_r($task);
                echo '</pre>';*/
            }
            return $subs;
    }
  • 相关阅读:
    WCF实现上传图片功能
    C#中String.Empty、NULL与""三者的区别
    C#中equal与==的区别
    static 关键字的使用,静态和非静态类的区别
    C#索引器
    C# 接口的隐式与显示实现说明
    Python文件处理
    Python3.X与urllib
    python中if __name__ == '__main__'
    Python中的random模块
  • 原文地址:https://www.cnblogs.com/YangJieCheng/p/5693566.html
Copyright © 2011-2022 走看看