广

PHP编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    PHP无限分类的类

    2018-10-18 20:39:35 次阅读 稿源:互联网
    零七广告

    代码如下:

    <?php
    /**
     * @author        YangHuan
     * @datetime    
     * @version        1.0.0
     */

    /**
     * Short description.
     *
     * Detail description
     * @author       
     * @version      1.0
     * @copyright    
     * @access       public
     */
    class Tree
    {
        /**
         * Description
         * @var       
         * @since     1.0
         * @access    private
         */
        var $data    = array();

        /**
         * Description
         * @var       
         * @since     1.0
         * @access    private
         */
        var $child    = array(-1=>array());

        /**
         * Description
         * @var       
         * @since     1.0
         * @access    private
         */
        var $layer    = array(-1=>-1);

        /**
         * Description
         * @var       
         * @since     1.0
         * @access    private
         */
        var $parent    = array();

        /**
         * Short description. 
         *
         * Detail description
         * @param      none
         * @global     none
         * @since      1.0
         * @access     private
         * @return     void
         * @update     date time
        */
        function Tree ($value)
        {
            $this->setNode(0, -1, $value);
        } // end func

        /**
         * Short description. 
         *
         * Detail description
         * @param      none
         * @global     none
         * @since      1.0
         * @access     private
         * @return     void
         * @update     date time
        */
        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;
            }
        } // end func

        /**
         * Short description. 
         *
         * Detail description
         * @param      none
         * @global     none 
         * @since      1.0
         * @access     private
         * @return     void
         * @update     date time
        */
        function getList (&$tree, $root= 0)
        {
            foreach ($this->child[$root] as $key=>$id)
            {
                $tree[] = $id;

                if ($this->child[$id]) $this->getList($tree, $id);
            }
        } // end func

        /**
         * Short description. 
         *
         * Detail description
         * @param      none
         * @global     none
         * @since      1.0
         * @access     private
         * @return     void
         * @update     date time
        */
        function getValue ($id)
        {
            return $this->data[$id];
        } // end func

        /**
         * Short description. 
         *
         * Detail description
         * @param      none
         * @global     none
         * @since      1.0
         * @access     private
         * @return     void
         * @update     date time
        */
        function getLayer ($id, $space = false)
        {
            return $space?str_repeat($space, $this->layer[$id]):$this->layer[$id];
        } // end func

        /**
         * Short description. 
         *
         * Detail description
         * @param      none
         * @global     none
         * @since      1.0
         * @access     private
         * @return     void
         * @update     date time
        */
        function getParent ($id)
        {
            return $this->parent[$id];
        } // end func

        /**
         * Short description. 
         *
         * Detail description
         * @param      none
         * @global     none
         * @since      1.0
         * @access     private
         * @return     void
         * @update     date time
        */
        function getParents ($id)
        {
            while ($this->parent[$id] != -1)
            {
                $id = $parent[$this->layer[$id]] = $this->parent[$id];
            }

            ksort($parent);
            reset($parent);

            return $parent;
        } // end func

        /**
         * Short description. 
         *
         * Detail description
         * @param      none
         * @global     none
         * @since      1.0
         * @access     private
         * @return     void
         * @update     date time
        */
        function getChild ($id)
        {
            return $this->child[$id];
        } // end func

        
        /**
         * Short description. 
         *
         * Detail description
         * @param      none
         * @global     none
         * @since      1.0
         * @access     private
         * @return     void
         * @update     date time
        */
        function getChilds ($id = 0)
        {
            $child = array($id);
            $this->getList($child, $id);

            return $child;
        } // end func
    } // 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();

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

    PHP无限分类-PHP100代码

    代码如下:

    <?php
    //无限分类,从子类找所有父类
    //$id 子类ID
     function php100_xd($id){
       $sql="select * from fl where id='$id'";
       $q=mysql_query($sql);
       $rs=mysql_fetch_array($q);
       $rs['fid']==0 ? "" : fl($rs['fid']);
       echo $rs['name']."-";
       }

    //读取所有父类下面的子类
    //$f顶级分类从什么开始,$s样式
     function php100_dx($f=0,$s=""){
       $sql="select * from fl where fid=$f";
       $q=mysql_query($sql);
       $s=$s."-";
       while($rs=mysql_fetch_array($q)){
         echo "<br>$s".$rs['name'];
      flt($rs['id'],$s);
         }
       }

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告