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;
    }
  • 相关阅读:
    星际之门(一)
    数组及指针效率
    centos directory server
    today reading notes
    lamp apache配置虚拟主机
    CentOS7 yum lamp 虚拟主机配置 lamp各组件简单影响性能的参数调整--for 一定的环境需求
    CentOS7 lamp安装 centoOS6 lamp
    查看实时公网ip
    CentOS6无法本地登陆,ssh远程登陆没问题
    tomcat root dir log 配置
  • 原文地址:https://www.cnblogs.com/YangJieCheng/p/5693566.html
Copyright © 2011-2022 走看看