/**
* author: askie
* blog: http://www.pkphp.com
* 版权: 随便用
* 无限分类
*/
class Tree
{
        public $data=array();
        public $cateArray=array();
       
        function Tree()
        {
              
        }
        function setNode ($id, $parent, $value)
    {
        $parent = $parent?$parent:0;
        $this->data[$id]                = $value;
        $this->cateArray[$id]        = $parent;
    }
    function getChildsTree($id=0)
    {
            $childs=array();
            foreach ($this->cateArray as $child=>$parent)
            {
                    if ($parent==$id)
                    {
                            $childs[$child]=$this->getChildsTree($child);
                    }
                   
            }
            return $childs;
    }
    function getChilds($id=0)
    {
            $childArray=array();
            $childs=$this->getChild($id);
            foreach ($childs as $child)
            {
                    $childArray[]=$child;
                    $childArray=array_merge($childArray,$this->getChilds($child));
            }
            return $childArray;
    }
    function getChild($id)
    {
            $childs=array();
            foreach ($this->cateArray as $child=>$parent)
            {
                    if ($parent==$id)
                    {
                            $childs[$child]=$child;
                    }
            }
            return $childs;
    }
    //单线获取父节点
    function getNodeLever($id)
    {
            $parents=array();
            if (key_exists($this->cateArray[$id],$this->cateArray))
            {
                    $parents[]=$this->cateArray[$id];
                    $parents=array_merge($parents,$this->getNodeLever($this->cateArray[$id]));
            }
            return $parents;
    }
    function getLayer($id,$preStr='|-')
    {
            return str_repeat($preStr,count($this->getNodeLever($id)));
    }
    function getValue ($id)
    {
        return $this->data[$id];
    } // end func
}

/*$Tree = new Tree("请选择分类");
//setNode(目录ID,上级ID,目录名字);
$Tree->setNode(1, 0, '目录1');
$Tree->setNode(2, 1, '目录2');
$Tree->setNode(5, 3, '目录5');
$Tree->setNode(3, 0, '目录3');
$Tree->setNode(4, 2, '目录4');
$Tree->setNode(9, 4, '目录9');
$Tree->setNode(6, 2, '目录6');
$Tree->setNode(7, 2, '目录7');
$Tree->setNode(8, 3, '目录8');

//print_r($Tree->getChildsTree(0));
//print_r($Tree->getChild(0));
//print_r($Tree->getLayer(2));

$category = $Tree->getChilds();

//遍历输出
foreach ($category as $key=>$id)
{
    echo $id.$Tree->getLayer($id, '|-').$Tree->getValue($id)."\n";
}*/

?>

转载于:https://www.cnblogs.com/8user/archive/2008/08/24/1275295.html

简单好用的PHP无限分类相关推荐

  1. php 递归格式化数组,PHP利用递归实现无限分类,格式化数组的简单示例

    这篇文章主要为大家详细介绍了PHP利用递归实现无限分类,格式化数组的简单示例,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小玲来看看吧!我们要做一个商品的无限分类 ...

  2. 关于一个无限分类的多选,单选相关的控件

    最近在一个项目中需要用到无限分类的平铺多选,单选这些功能,查了一些资料,结果大都是一些用IFrame这样的东西做的,虽然用起来直观,但本人更喜欢集成控件形式的,于是抽了一些时间做了一个.思路是利用控件 ...

  3. php mysql 分类_php+mysql实现无限分类实例详解

    本文实例讲述了php+mysql实现无限分类的方法.分享给大家供大家参考.具体分析如下: 1.数据库通过设置父类ID来进行唯一索引,然后使用函数的递归调用实现无限分类: 2.数据库设计通过特定格式进行 ...

  4. 深度实现session【包括session入库、session机制和session和cookie的使用方法,完善会话机制(在分布式机器中也能使用)】、无限分类的实现...

    1.session的注意点: @session_start();//这个配置需要注意,session开启中会有影响,所以使用错误抑制符进行限制[并且使用php.ini对session进行自动开启] s ...

  5. php mysql无限_php+mysql实现无限分类实例详解

    php+mysql实现无限分类实例详解 fenlei($arr[$i][0]);   //$arr[$i][1]表示第$i+1个分类的id的值.进行递归,也就是把自己的id作为f_id参数把自己的子类 ...

  6. Php xml 目录,PHP-PHP+xml的无限分类树目录的方法?

    无限分类树的代码有很多,下面是个示例: /** by lenush; */ class Tree { var $data = array(); var $child = array(-1=>ar ...

  7. php 分类代码,php无限分类的图文代码介绍

    无限分类,是指从一个最高分类开始,每个子分类都可以分出自己的若干个子分类,可以一直分下去,称为无限级分类: 比如一棵树,从一根树干开始,分出多个树枝,而这些树枝又分出其他的分支,理论上是可以无限分裂下 ...

  8. php分类程序,PHP无限分类实现程序_PHP教程

    1.数据库通过设置父类ID来进行唯一索引,然后使用函数的递归调用实现无限分类:2.数据库设计通过特定格式进行排列,然后使用mysql查询关键函数:concat.程序实现比较简单 首先我们假设有这样的一 ...

  9. 左右值无限分类实现算法

    转:左右值无限分类实现算法 左右值无限分类实现算法 一.引言 产品分类,多级的树状结构的论坛,邮件列表等许多地方我们都会遇到这样的问题:如何存储多级结构的数据?在PHP的应用中,提供后台数据存储的通常 ...

最新文章

  1. linux 一块网卡两个ip,Linux 一块网卡配置多个IP的方法
  2. python 连 mongodb
  3. Debug enterprise search menu
  4. 面向对象上机题-迭归算法
  5. 世界机器人冠军王宇航_★​身边的榜样,为你喝彩:我校学子摘冠第七届河南省VEX U机器人挑战赛...
  6. Method-Swizzling实战-实现iOS原生网络请求性能采集
  7. hdu 1698 Just a Hook 线段树区间更新
  8. Python: 自定义类对象序列化为Json串
  9. 吴恩达机器学习作业Python实现(七):K-means和PCA主成分分析
  10. Docker最新超详细版教程通俗易懂(基础版)
  11. 水果销售管理系统课程设计报告
  12. Unable to import maven project: See logs for details
  13. Android开发获取连接的WIFI名称
  14. 四.运行时数据区-本地方法栈(Native Method Stack)-堆-方法区
  15. socket技术路线_呐,这不就是你要的C++后台开发学习路线吗?
  16. Linux虚机 下给用户调整安装JDK版本
  17. 手机录屏视频用ffmpeg进行视频截取以及旋转
  18. M1芯片MacBook通过Docker安装Kali
  19. 正则表达式(附匹配手机号和HTML标签)
  20. unplugin-auto-import的配置和eslint报错解决

热门文章

  1. lua 代码加密方案
  2. MDEV Primer
  3. HTML5表单的创建及与PHP的交互
  4. java基础知识回顾之javaIO类总结
  5. Linux笔记——linux下的语音合成系统
  6. VMWARE ESXI 虚拟硬盘的格式:精简置备、厚置备延迟置零、厚置备置零
  7. java的内部类和匿名类剖析
  8. 桌面虚拟化对企业IT的四大贡献
  9. linux下常用软件下载
  10. JavaScript的9个陷阱及评点