• 技术文章 >php教程 >PHP源码

    php树型菜单类

    2016-06-08 17:25:22原创395

    原理简单,学过数据结构的一看就明白是什么道理了。不过今天在使用时数据中出现了子节点id(71)小于父节点id(104).导致部分子节点没被存储入数组
    修改了一下

    class tree
    {
    var $data = array();
    var $child = array(-1=>array());
    var $layer = array(-1=>-1);
    var $parent = array();
    var $num = array();

    function setnode($id, $parent, $value,$num=0)
    {
    $parent = $parent ? $parent : 0;

    $this->data[$id] = $value;
    $this->num[$id] = $num;
    if (!isset($this->child[$id])) $this->child[$id] = array();
    $this->child[$parent][] = $id;
    $this->parent[$id] = $parent;

    if (!isset($this->layer[$parent]) && $parent == 0)
    {
    $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)
    {
    if($this->layer[$id]==0)
    {
    return $this->data[$id];
    }
    else
    {
    return $leftmar.$this->data[$id];
    }
    }

    function getnum($id)
    {
    return $this->num[$id];
    }

    function getbitvalue($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;
    }

    function printdata()
    {
    return $this->layer;
    }
    }php树型菜单类
    ?>
    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:nbsp this parent id function
    上一篇:php文件上传之原理分析与上传类代码 下一篇:php中常用的函数集合
    线上培训班

    相关文章推荐

    • php 数组查询 • 正则表达式三• 递归与迭代同时实现php快速排序• PHP判断网络文件存在• 费了点心思写的Php图像处理类

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网