Home  >  Article  >  Backend Development  >  PHP infinite classification classes_PHP tutorial

PHP infinite classification classes_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 15:58:14780browse

Copy code The code is as follows:

/**
* @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代码:

复制代码 代码如下:

//new Tree(the name of the root directory);
//The ID of the root directory is automatically assigned to 0
$Tree = new Tree('root directory' );

//setNode(directory ID, superior ID, directory name);
$Tree->setNode(1, 0, 'Directory 1');
$Tree->setNode(2, 0 , 'Directory 2');
$Tree->setNode(3, 0, 'Directory 3');
$Tree->setNode(4, 3, 'Directory 3.1');
$Tree->setNode(5, 3, 'Directory 3.2');
$Tree->setNode(6, 3, 'Directory 3.3');
$Tree->setNode(7, 2 , 'Directory 2.1');
$Tree->setNode(8, 2, 'Directory 2.2');
$Tree->setNode(9, 2, 'Directory 2.3');
$Tree->setNode(10, 6, 'Directory 3.3.1');
$Tree->setNode(11, 6, 'Directory 3.3.2');
$Tree->setNode (12, 6, 'Directory 3.3.3');

//getChilds (specified directory ID);
//Get the lower-level directories of the specified directory. If no directory is specified, start from the root directory
$category = $Tree->getChilds();

//Traverse output
foreach ($category as $key=>$id)
{
echo $Tree->getLayer($id, '|-').$Tree- >getValue($id)."
n";
}

PHP Unlimited Classification-bkJia Code

Copy code The code is as follows:

//Unlimited categories, find all parents from subcategories Class
//$id subclass 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']."-";
}

//Read all subclasses under the parent class
//$fWhat does the top category start from, $s style
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 "
$s".$rs['name'];
flt($rs ['id'],$s);
}
}

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/317685.htmlTechArticleCopy the code as follows: ?php /*** @author YangHuan * @datetime * @version 1.0.0*/ /** * Short description. * * Detail description * @author * @version 1.0 * @copyright * @acce...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn