zoukankan      html  css  js  c++  java
  • 夺命雷公狗---无限级分类NO5

    <?php
        header("Content-Type:text/html;charset=utf-8");
        $aarr = array(
            array('id'=>1,'name'=>'安徽','pid'=>0),
            array('id'=>2,'name'=>'海淀','pid'=>7),
            array('id'=>3,'name'=>'浣溪县','pid'=>5),
            array('id'=>4,'name'=>'昌平','pid'=>7),
            array('id'=>5,'name'=>'淮北','pid'=>1),
            array('id'=>6,'name'=>'朝阳','pid'=>7),
            array('id'=>7,'name'=>'北京','pid'=>0),
            array('id'=>8,'name'=>'上地','pid'=>2)
         );
        
        //家谱树的应用,如面包屑导航,首页 > 手机类型 > GSM手机 > iPhone > iPhone6s
        
        function familytree($arr,$id){
            $tree = array();
            foreach($arr as $v){
                if($v['id'] == $id){
                    $tree[] = $v;
                    if($v['pid'] > 0){
                        array_push($tree,familytree($arr,$v['pid']));
                    }
                }
            }
            return $tree;
        }
        
        echo "<pre>";
        print_r(familytree($aarr,8));

    这样好像是可以了,但实际上返回的是一个二维数组,所以还是不行,那么只能将使用array_push的用法换成array_merge了如下所示:

    <?php
        header("Content-Type:text/html;charset=utf-8");
        $aarr = array(
            array('id'=>1,'name'=>'安徽','pid'=>0),
            array('id'=>2,'name'=>'海淀','pid'=>7),
            array('id'=>3,'name'=>'浣溪县','pid'=>5),
            array('id'=>4,'name'=>'昌平','pid'=>7),
            array('id'=>5,'name'=>'淮北','pid'=>1),
            array('id'=>6,'name'=>'朝阳','pid'=>7),
            array('id'=>7,'name'=>'北京','pid'=>0),
            array('id'=>8,'name'=>'上地','pid'=>2)
        );
        
        //家谱树的应用,如面包屑导航,首页 > 手机类型 > GSM手机 > iPhone > iPhone6s
        
        function familytree($arr,$id){
            $tree = array();
            foreach($arr as $v){
                if($v['id'] == $id){
                    $tree[] = $v;
                    if($v['pid'] > 0){
                        $tree = array_merge($tree,familytree($arr,$v['pid']));
                    }
                }
            }
            return $tree;
        }
        
        echo "<pre>";
        print_r(familytree($aarr,8));
  • 相关阅读:
    Linux学习(三十一)系统日志
    Linux学习(三十)rsync的使用
    php检测文字编码的方法
    Phpexcel使用
    高并发秒杀解决方案(转载)
    通过CSS选择器查找元素
    通过PartiaLinkText查找元素
    通过LinkText查找元素
    通过TagName查找元素
    通过ClassNmae查找元素
  • 原文地址:https://www.cnblogs.com/leigood/p/4907730.html
Copyright © 2011-2022 走看看