请教php树问题

ihefe 2010-11-16 03:13:46

$array=Array(
0 => Array("id" => 329, "parent" => -1,"name" => "web", "user_id" => 3 ),
1 => Array("id" => 330, "parent" => 329, "name" => "php","user_id" => 3),
2 => Array("id" => 336,"parent" => 329,"name" => "nginx","user_id" => 3),
3 => Array("id" => 337,"parent" => 330,"name" => "apache","user_id" => 3),
4 => Array("id" => 338,"parent" => 336,"name" => "httpd", "user_id" => 3),
5 => Array("id" => 339,"parent" => 336,"name" => "httpd","user_id" => 3),
6 => Array("id" => 340,"parent" => 329,"name" => "httpd", "user_id" => 3),
7 => Array("id" => 341,"parent" => 329,"name" => "httpd", "user_id" => 3),
8 => Array("id" => 342,"parent" => -1,"name" => "httpd", "user_id" => 3),
9 => Array("id" => 343,"parent" => 329,"name" => "httpd", "user_id" => 3),
10 => Array("id" => 344,"parent" => 329,"name" => "httpd", "user_id" => 3),
14 => Array("id" => 348,"parent" => 329,"name" => "httpd", "user_id" => 3),
15 => Array("id" => 349,"parent" => -1,"name" => "httpd", "user_id" => 3),
100 => Array("id" => 3444,"parent" => 329,"name" => "httpd", "user_id" => 3)
);
function tree($array=null,$tid=null,$tpid=null,$tname=null,$pid=-1)
{
$str="";
if(count($array)<=1)return ;
$str="<ul>";
foreach($array as $key=>$value)
{
if($value[$tpid]==$pid)
{
$array_temp[]=$array[$key];
unset($array[$key]);
$str.="<li>".$value[$tname].
tree($array,$tid,$tpid,$tname,$value[$tid])."</li>";
}
}
$str.="</ul>";
return $str;
}
print_r(tree($array,"id","parent","name"));

以上得到下面 。

<ul>
<li>web
<ul>
<li>php
<ul>
<li>apache<ul></ul></li>
</ul>
</li>
<li>nginx
<ul>
<li>httpd<ul></ul></li>
<li>httpd<ul></ul></li>
</ul>
</li>
<li>httpd<ul></ul></li>
<li>httpd<ul></ul></li>
<li>httpd<ul></ul></li>
<li>httpd<ul></ul></li>
<li>httpd<ul></ul></li>
<li>httpd<ul></ul></li>
</ul>
</li>
<li>httpd<ul></ul></li>
<li>httpd<ul></ul></li>
</ul>



如何把多余的<ul></ul>去掉 。或者有更好的树形?
...全文
84 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ihefe 2010-11-16
  • 打赏
  • 举报
回复


还是老大强 !
xuzuning 2010-11-16
  • 打赏
  • 举报
回复
function tree($array=null,$tid=null,$tpid=null,$tname=null,$pid=-1)
{
$str="";
if(count($array)<=1)return ;

foreach($array as $key=>$value)
{
if($value[$tpid]==$pid)
{
$array_temp[]=$array[$key];
unset($array[$key]);
$str.="<li>".$value[$tname].
tree($array,$tid,$tpid,$tname,$value[$tid])."</li>";
}
}

return $str ? "<ul>$str</ul>" : '';
}
ihefe 2010-11-16
  • 打赏
  • 举报
回复

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧