Php 如何在树状视图结构中显示阵列?

Php 如何在树状视图结构中显示阵列?,php,html,arrays,codeigniter,treeview,Php,Html,Arrays,Codeigniter,Treeview,我想构建一个由部门(父部门)和子部门(子部门)组成的树视图。在我的数据库中,我认为我有一个很好的结构,如下所示: -------------------------------------------- Dep_name | dep_id | dep_parent_id -------------------------------------------- Accounting | 1 | 0 Human-Resources

我想构建一个由部门(父部门)和子部门(子部门)组成的树视图。在我的数据库中,我认为我有一个很好的结构,如下所示:

--------------------------------------------
 Dep_name         | dep_id | dep_parent_id    
--------------------------------------------
 Accounting       |    1   |        0
 Human-Resources  |    2   |        0
 IT               |    3   |        0
 Network          |    4   |        3
 Web Development  |    5   |        3
 Front-End        |    6   |        5
 Back-End         |    7   |        5
Array (
    [0] => stdClass Object (
        [Dep_name] => Accounting and Finance
        [dep_id] => 1
        [dep_parent_id] => 0
    )
    [1] => stdClass Object (
        [Dep_name] => Human-Recources
        [dep_id] => 2
        [dep_parent_id] => 0
    )
    [2] => stdClass Object (
        [Dep_name] => IT
        [dep_id] => 3
        [dep_parent_id] => 0
        [children] => Array (
            [0] => stdClass Object (
                [Dep_name] => Network
                [dep_id] => 5
                [dep_parent_id] => 3
            )
            [1] => stdClass Object (
                [Dep_name] => Web Development
                [dep_id] => 6
                [dep_parent_id] => 3
                [children] => Array (
                    [0] => stdClass Object (
                        [Dep_name] => Front-End
                        [dep_id] => 7
                        [dep_parent_id] => 6
                    )
                    [1] => stdClass Object (
                        [Dep_name] => Back-End
                        [dep_id] => 8
                        [dep_parent_id] => 6
                    )
                )
            )
        )
    )
    [3] => stdClass Object (
        [Dep_name] => Marketing
        [dep_id] => 4
        [dep_parent_id] => 0
        [children] => Array (
            [0] => stdClass Object (
                [Dep_name] => web-marketing
                [dep_id] => 9
                [dep_parent_id] => 4
            )
        )
    )
)
部门父部门id为0的部门--->它们没有父部门。例如,Web开发和网络是IT部门的子部门。前端和后端是Web开发的产物

我找到了一个递归函数,它适合于从这个数据库表中获取所有数据,并将它们放在一个正确结构的数组中。但问题是我不知道如何像树状视图一样显示这个数组。 比如像这样

  • 部门
    • 会计
    • 人力资源
    • 网络
    • 网络开发
      • 前端
      • 后端
。。。。。等等

在我的数据库中,我认为我有一个很好的结构,如下所示:

--------------------------------------------
 Dep_name         | dep_id | dep_parent_id    
--------------------------------------------
 Accounting       |    1   |        0
 Human-Resources  |    2   |        0
 IT               |    3   |        0
 Network          |    4   |        3
 Web Development  |    5   |        3
 Front-End        |    6   |        5
 Back-End         |    7   |        5
Array (
    [0] => stdClass Object (
        [Dep_name] => Accounting and Finance
        [dep_id] => 1
        [dep_parent_id] => 0
    )
    [1] => stdClass Object (
        [Dep_name] => Human-Recources
        [dep_id] => 2
        [dep_parent_id] => 0
    )
    [2] => stdClass Object (
        [Dep_name] => IT
        [dep_id] => 3
        [dep_parent_id] => 0
        [children] => Array (
            [0] => stdClass Object (
                [Dep_name] => Network
                [dep_id] => 5
                [dep_parent_id] => 3
            )
            [1] => stdClass Object (
                [Dep_name] => Web Development
                [dep_id] => 6
                [dep_parent_id] => 3
                [children] => Array (
                    [0] => stdClass Object (
                        [Dep_name] => Front-End
                        [dep_id] => 7
                        [dep_parent_id] => 6
                    )
                    [1] => stdClass Object (
                        [Dep_name] => Back-End
                        [dep_id] => 8
                        [dep_parent_id] => 6
                    )
                )
            )
        )
    )
    [3] => stdClass Object (
        [Dep_name] => Marketing
        [dep_id] => 4
        [dep_parent_id] => 0
        [children] => Array (
            [0] => stdClass Object (
                [Dep_name] => web-marketing
                [dep_id] => 9
                [dep_parent_id] => 4
            )
        )
    )
)

我已经尝试使用一种非常简单的方法打印数组

print_r($tree);
它像这样打印:

--------------------------------------------
 Dep_name         | dep_id | dep_parent_id    
--------------------------------------------
 Accounting       |    1   |        0
 Human-Resources  |    2   |        0
 IT               |    3   |        0
 Network          |    4   |        3
 Web Development  |    5   |        3
 Front-End        |    6   |        5
 Back-End         |    7   |        5
Array (
    [0] => stdClass Object (
        [Dep_name] => Accounting and Finance
        [dep_id] => 1
        [dep_parent_id] => 0
    )
    [1] => stdClass Object (
        [Dep_name] => Human-Recources
        [dep_id] => 2
        [dep_parent_id] => 0
    )
    [2] => stdClass Object (
        [Dep_name] => IT
        [dep_id] => 3
        [dep_parent_id] => 0
        [children] => Array (
            [0] => stdClass Object (
                [Dep_name] => Network
                [dep_id] => 5
                [dep_parent_id] => 3
            )
            [1] => stdClass Object (
                [Dep_name] => Web Development
                [dep_id] => 6
                [dep_parent_id] => 3
                [children] => Array (
                    [0] => stdClass Object (
                        [Dep_name] => Front-End
                        [dep_id] => 7
                        [dep_parent_id] => 6
                    )
                    [1] => stdClass Object (
                        [Dep_name] => Back-End
                        [dep_id] => 8
                        [dep_parent_id] => 6
                    )
                )
            )
        )
    )
    [3] => stdClass Object (
        [Dep_name] => Marketing
        [dep_id] => 4
        [dep_parent_id] => 0
        [children] => Array (
            [0] => stdClass Object (
                [Dep_name] => web-marketing
                [dep_id] => 9
                [dep_parent_id] => 4
            )
        )
    )
)
这是我的函数,它从数组$data从数据库表中获取数据,并构建树数组$branch

function buildTree(array $data, $parentId = 0) 
{
    $branch = array();

    foreach ($data as $element) 
    {
        if ($element->dep_parent_id == $parentId) 
        {
            $children = buildTree($data, $element->dep_id);
            if ($children) 
            {
                $element->children = $children;
            }
            $branch[] = $element;
        }

    }

    return $branch;
}
然后,我使用以下方式打印它:

print_r(buildTree($data));
如果您能帮助我解决这个问题,并从我从函数
buildTree($data)

函数排序(array$array):array返回的array$branch以html格式显示树视图结构,我将不胜感激
{
$sort=[];
foreach($数组作为$项){
如果($item->dep\u parent\u id!==0){
$sort[$item->dep\u parent\u id][$item->dep\u id]=$item->dep\u name;
继续;
}
$sort[$item->dep_id][0]=$item->dep_name;
}
返回$sort;
}

您需要一个递归函数来检查对象的
子属性是否存在,如果存在,则在循环这些元素之前打印出一个新的
标记

函数printree($array){
$output=“
    \n”; foreach($a数组){ $output.=“
  • ”$a->Dep\u name.
  • \n”; 如果(isset($a->children)){ $output.=printree($a->children); } } $output.=“
\n”; 返回$output; }
这将返回一个字符串,该字符串在描述的层次结构中包含HTML。输出将是这样的(好吧,不是像这样缩进,但是HTML将打印相同的内容)

  • 会计和财务
  • 人力资源
    • 网络
    • 网络开发
      • 前端
      • 后端
  • 市场营销
    • 网络营销

您的问题是什么,确切地说。。?如何打印?是的,我的意思是如何使用html在树状视图结构中打印数组我知道如何构建数组,但我不知道如何使用html中的无序列表以树状视图的形式显示数组。所以我不能用这个来回答我的问题。