当前位置: 代码迷 >> PHP >> php怎么实现公司结构图(树形结构)
  详细解决方案

php怎么实现公司结构图(树形结构)

热度:38   发布时间:2016-04-28 23:25:53.0
php如何实现公司结构图(树形结构)
大家好,

我想用php实现一个树形结构图,现在不知道如何实现。


希望能听到大家的想法和思路。如果能附上示例代码或源码就更好了!! 


提前感谢啦。

------解决方案--------------------
用二叉树来表示树,先生成后显示
------解决方案--------------------
这个树看是什么了
如果上级唯一,用无限级即可,即无限树,递归遍历即可

如果上级不唯一,那就复杂了
------解决方案--------------------
说白了,就是给定n个元素,元素之间存在一个关系(多个关系可以映射为一个关系),
无论它是什么结构,也不管上级唯一不唯一,只要是在纸上用笔能画出来的结构,
都可以表示为数据结构中的图,图可以用矩阵存储,矩阵是可以线性化的,

不妨找一本数据结构的书,浏览图论相关章节,特别是存储和创建以及遍历
------解决方案--------------------
表结构
id
companyName
parentid
这样的表结构就可以实现二叉树的保存。
至于遍历,我是取出一个父节点的所有子节点保存到缓存文件,省去以后的麻烦,至于保存我也啥好想法,我是保存数组中,类似这样的数组array('id'=>$id,'name'=>$companyName,'children'=>array($child1id,$child2id))以后再取的时候就可以很方便的取出一个父节点的所有子节点的,至于怎么判断一个节点是否是叶子节点,只需判断它所在数组的children元素是否为空就可以了
------解决方案--------------------
PHP code
//数据库记录$result[0] = array('id'=>1,'pid'=>0,'name'=>'公司1',);$result[1] = array('id'=>2,'pid'=>0,'name'=>'公司2');$result[2] = array('id'=>3,'pid'=>2,'name'=>'公司2的子公司1');$result[3] = array('id'=>4,'pid'=>1,'name'=>'公司1的子公司1');$result[4] = array('id'=>5,'pid'=>2,'name'=>'公司2的子公司2');$result[5] = array('id'=>6,'pid'=>3,'name'=>'公司2的子公司1的子公司1');$result[6] = array('id'=>7,'pid'=>3,'name'=>'公司2的子公司1的子公司2');//简易类class tree{    function tree($rs,$idName,$pidName,$nodeName)    {        $this->idName    = $idName;        $this->nodeName = $nodeName;        $tree = array();        foreach((array)$rs as $k=>$v)        {            $tree[$v[$pidName]][] = $v;        }        $this->treeArray = $tree;    }    function showTree($root,$deep)    {        if( $this->treeArray[$root] )        {            foreach($this->treeArray[$root] as $k=>$v)            {                $t = $v[$this->idName];                $str   = str_repeat("&nbsp;",$deep*4)."|-".str_repeat("-",$deep);                $html .="{$str}{$v[$this->nodeName]}<br/>";                    if($this->treeArray[$t] )                 {                    $gx = $deep + 1;                    $html .= $this->showTree( $t,$gx );                }            }        }        return $html;    }}$tree = new tree($result,'id','pid','name');echo $tree->showTree(0,0);
------解决方案--------------------
探讨
搜了一下
http://www.graphviz.org/
东西是不错,不过在PHP里没办法用

引用:
Google "GraphvizDot"

  相关解决方案