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;
    }
  • 相关阅读:
    Spring框架的反序列化远程代码执行漏洞分析(转)
    JVM调优总结(转)
    创造与熟练与微创造
    一次 react-router 中遇到的小坑
    mac中强大的快捷键
    数组思维 -- join的一些用法感悟
    undefined null 与 字符串相加
    mobx中的数组需要注意的地方
    更换鼠标垫(鼠标)的心路历程
    Object.defineProperty 中的 writable 和 configurable 和 enumerable 的理解
  • 原文地址:https://www.cnblogs.com/YangJieCheng/p/5693566.html
Copyright © 2011-2022 走看看