Heim Backend-Entwicklung PHP-Tutorial php怎么实现公司结构图(树形结构)

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

Jun 13, 2016 pm 01:10 PM
array gt name quot

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(" ",$deep*4)."|-".str_repeat("-",$deep);
                $html .="{$str}{$v[$this-&gt;nodeName]}<br>";    
                if($this-&gt;treeArray[$t] ) 
                {
                    $gx = $deep + 1;
                    $html .= $this-&gt;showTree( $t,$gx );
                }
            }
        }
        return $html;
    }
}
$tree = new tree($result,'id','pid','name');
echo $tree-&gt;showTree(0,0);
<br><font color="#e78608">------解决方案--------------------</font><br>
Nach dem Login kopieren
探讨
搜了一下
http://www.graphviz.org/
东西是不错,不过在PHP里没办法用

引用:
Google "GraphvizDot"

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was sind die Unterschiede zwischen Huawei GT3 Pro und GT4? Was sind die Unterschiede zwischen Huawei GT3 Pro und GT4? Dec 29, 2023 pm 02:27 PM

Was sind die Unterschiede zwischen Huawei GT3 Pro und GT4?

Fix: Snipping-Tool funktioniert unter Windows 11 nicht Fix: Snipping-Tool funktioniert unter Windows 11 nicht Aug 24, 2023 am 09:48 AM

Fix: Snipping-Tool funktioniert unter Windows 11 nicht

So beheben Sie den Fehler „Verbindung zum App Store nicht möglich' auf dem iPhone So beheben Sie den Fehler „Verbindung zum App Store nicht möglich' auf dem iPhone Jul 29, 2023 am 08:22 AM

So beheben Sie den Fehler „Verbindung zum App Store nicht möglich' auf dem iPhone

Array mit der Array.Sort-Funktion in C# sortieren Array mit der Array.Sort-Funktion in C# sortieren Nov 18, 2023 am 10:37 AM

Array mit der Array.Sort-Funktion in C# sortieren

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决

Einfache und klare Methode zur Verwendung der PHP-Funktion array_merge_recursive() Einfache und klare Methode zur Verwendung der PHP-Funktion array_merge_recursive() Jun 27, 2023 pm 01:48 PM

Einfache und klare Methode zur Verwendung der PHP-Funktion array_merge_recursive()

So verwenden Sie die Funktion array_combine in PHP, um zwei Arrays zu einem assoziativen Array zu kombinieren So verwenden Sie die Funktion array_combine in PHP, um zwei Arrays zu einem assoziativen Array zu kombinieren Jun 26, 2023 pm 01:41 PM

So verwenden Sie die Funktion array_combine in PHP, um zwei Arrays zu einem assoziativen Array zu kombinieren

Detaillierte Erläuterung der Verwendung der PHP-Funktion array_fill() Detaillierte Erläuterung der Verwendung der PHP-Funktion array_fill() Jun 27, 2023 am 08:42 AM

Detaillierte Erläuterung der Verwendung der PHP-Funktion array_fill()

See all articles