设为首页 收藏本站
查看: 596|回复: 0

[经验分享] php class tree

[复制链接]

尚未签到

发表于 2017-3-20 13:59:35 | 显示全部楼层 |阅读模式
<?php         
        class Tree{         
                var $data = array();
               
                var $child = array(-1=>array());
               
                var $layer = array(-1=>-1);
               
                var $parent = array();
                 
                function Tree ($value){
                        $this->setNode(0, -1, $value);
                }

                function setNode ($id, $parent, $value){
                        $parent = $parent?$parent:0;
                        $this->data[$id] = $value;
                        $this->child[$id] = array();
                        $this->child[$parent][] = $id;
                        $this->parent[$id] = $parent;
                        if (!isset($this->layer[$parent])){
                                $this->layer[$id] = 0;
                        }else{
                                $this->layer[$id] = $this->layer[$parent] + 1;
                        }
                }

                function getList (&$tree, $root= 0){
                        foreach ($this->child[$root] as $key=>$id){
                                $tree[] = $id;
                                if ($this->child[$id]) $this->getList($tree, $id);
                        }
                }

                function getValue ($id){
                        return $this->data[$id];
                }

                function getLayer ($id, $space = false){
                        return $space?str_repeat($space, $this->layer[$id]):$this->layer[$id];
                }
               
                function getParent ($id){
                        return $this->parent[$id];
                }

                function getParents ($id){
                        while ($this->parent[$id] != -1){
                                $id = $parent[$this->layer[$id]] = $this->parent[$id];
                        }
                        ksort($parent);
                        reset($parent);
                        return $parent;
                }

                function getChild ($id){
                        return $this->child[$id];
                }

                function getChilds ($id = 0){
                        $child = array($id);
                        $this->getList($child, $id);
                        return $child;
                }
        } // end class
?>
<?php
/*--------------------------------------------------------------------------------
使用方法
PHP代码:--------------------------------------------------------------------------------
*/
        //new Tree(根目录的名字);
        //根目录的ID自动分配为0
        $Tree = new Tree('根目录');
        //setNode(目录ID,上级ID,目录名字);
        $Tree->setNode(1, 0, '目录1');
        $Tree->setNode(2, 0, '目录2');
        $Tree->setNode(3, 0, '目录3');
        $Tree->setNode(4, 3, '目录3.1');
        $Tree->setNode(5, 3, '目录3.2');
        $Tree->setNode(6, 3, '目录3.3');
        $Tree->setNode(7, 2, '目录2.1');
        $Tree->setNode(8, 2, '目录2.2');
        $Tree->setNode(9, 2, '目录2.3');
        $Tree->setNode(10, 6, '目录3.3.1');
        $Tree->setNode(11, 6, '目录3.3.2');
        $Tree->setNode(12, 6, '目录3.3.3');
        //getChilds(指定目录ID);
        //取得指定目录下级目录.如果没有指定目录就由根目录开始
        $category = $Tree->getChilds(3);
        //遍历输出
        foreach ($category as $key=>$id)
        {
        echo $Tree->getLayer($id, '|-').$Tree->getValue($id)."<br>\n";
        }
?>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-352504-1-1.html 上篇帖子: php-fpm的启动 下篇帖子: [PHP]Ajax实例
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表