[英]How create tree view in PHP?
我有很多用户,每个用户都可以有父母:
array(6) {
guest => NULL
moderator => NULL
member => array(1) [ //username
0 => "guest" (5) //parent
]
user => array(1) [
0 => "member" (6)
]
admin => array(1) [
0 => "moderator" (9)
]
}
我想根据这些数据制作树形视图。 结果应如下所示: http : //www.phorum.org/phorum5/file.php/62/3237/treeview_lightweight_admin_screenshot.jpg
结果将是:
- guest
- member
- user
- moderator
- admin
编辑:
我试图写树生成器,但我不知道如何使用递归。
private function generateTree($node)
{
$return = array();
if(is_array($node))
{
foreach($node as $user => $parents)
{
if(is_null($parents))
{
$return[$user] = null;
}
if(is_array($parents))
{
foreach($parents as $parent)
{
if(array_key_exists($parent, $return))
{
$return[$parent] = $user;
}
else
{
dump($user, $parent);
}
}
}
}
}
return $return;
}
返回:
array(2) {
guest => "member" (6)
moderator => "admin" (5)
}
剩下:
user => array(1) [
0 => "member" (6)
]
您可以通过使HTML构建器方法递归来激活它。 本质上,该方法使用递增级别变量(级别1、2、3、4 ..)来调用自身,直到达到最终级别。 每个级别都取决于HTML代码。 一个典型的例子是:
function render($treeData, &$html, $level = 0) {
foreach ($treeData->branches as $branch) {
render($branch, $level + 1);
}
$html .= '<div class="section-level-'.$level.'">'.$treeData->currentLevelData.'</div>';
}
$html = '';
render($treeData, $html);
这当然是伪代码。 :)
如果要调试,则可以使用var_dump($array)
(用于HTML渲染)或print_r($array)
(纯文本渲染)来获得一些自动视图。 对于自定义视图,您必须在数组上循环并编写自己的HTML
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.