递归读取输出无限分类目录
2012-04-20 23:24
330 查看
php递归值自动读取无限分类目录
对于数据库最简单的一张表实现,建立category表,字段分别为ID,name,f_id.
ID为自增主键,name为类名,f_id为父级目录,默认为根目录0.
输出结构为
最后递归在前台输出
结构为
为了实现js的菜单的联动效果,结构也可以写成
html为
对于数据库最简单的一张表实现,建立category表,字段分别为ID,name,f_id.
ID为自增主键,name为类名,f_id为父级目录,默认为根目录0.
<?php header ( "content-type:text/html; charset=utf-8" ); mysql_connect ( "localhost", "admin", "1123581321" ); mysql_query ( "set names utf8" ); ?> <?php function getmenu($f_id = 0) { $menu_arr = array (); $sql = "SELECT * FROM test.`category` where f_id=" . $f_id; $result = mysql_query ( $sql ); if (! $result) { return false; } $i = 1; $row = ""; while ( $row = mysql_fetch_assoc ( $result ) ) { $menu_arr [$i] = $row; $menu_arr[$i]["next"]=getmenu($row['ID']); $i ++; } return $menu_arr; } $menus = getmenu (); echo "<pre>"; print_r ( $menus ); echo "</pre>"; ?>
输出结构为
Array ( [1] => Array ( [ID] => 1 [name] => 前端 [f_id] => 0 [next] => Array ( [1] => Array ( [ID] => 5 [name] => ajax [f_id] => 1 [next] => Array ( [1] => Array ( [ID] => 11 [name] => EXTJS [f_id] => 5 [next] => Array ( ) ) ) ) [2] => Array ( [ID] => 6 [name] => javascript [f_id] => 1 [next] => Array ( [1] => Array ( [ID] => 10 [name] => JQUERY [f_id] => 6 [next] => Array ( ) ) ) ) [3] => Array ( [ID] => 7 [name] => html5 [f_id] => 1 [next] => Array ( ) ) ) ) [2] => Array ( [ID] => 2 [name] => php [f_id] => 0 [next] => Array ( [1] => Array ( [ID] => 8 [name] => wordpress [f_id] => 2 [next] => Array ( ) ) [2] => Array ( [ID] => 9 [name] => discuz [f_id] => 2 [next] => Array ( ) ) ) ) [3] => Array ( [ID] => 4 [name] => net [f_id] => 0 [next] => Array ( ) ) )
最后递归在前台输出
<?php function pri($menus){ foreach ($menus as $va){ echo "<div>".$va["name"]; if($va["next"]){ pri($va["next"]); } echo "</div>"; } } pri($menus); ?>
结构为
<body> <div> 前端 <div> ajax <div> EXTJS </div> </div> <div> javascript <div> JQUERY </div> </div> <div> html5 </div> </div> <div> php <div> wordpress </div> <div> discuz </div> </div> <div> net </div> </body>
为了实现js的菜单的联动效果,结构也可以写成
<?php function pri($menu){?> <div><?php foreach ($menu as $va){?> <div <?php if($va["next"]){?> class="title" <?php }?>><?php echo $va["name"]?></div> <?php if($va["next"]){pri($va["next"]);}?> <?php }?></div> <?php }?> <?php pri($menus)?>
html为
<div> <div class="title"> 前端 </div> <div> <div class="title"> ajax </div> <div> <div> EXTJS </div> </div> <div class="title"> javascript </div> <div> <div> JQUERY </div> </div> <div> html5 </div> </div> <div class="title"> php </div> <div> <div> wordpress </div> <div> discuz </div> </div> <div> net </div> </div>
相关文章推荐
- SqlServer与Linq 无限递归目录树且输出层级
- 递归--目录操作及无限级分类之子孙树应用
- 递归实现无限分类列表的读取(子类加空格缩进)
- php实战之使用递归读取商品无限分类
- SqlServer与Linq 无限递归目录树且输出层级
- php分类目录下拉列表(递归+无限分类)
- SqlServer与Linq 无限递归目录树且输出层级
- SqlServer与Linq 无限递归目录树且输出层级
- java递归读取目录下所有文件的方法
- PHP无限分类(树形类),非数据库直接递归
- PHP迭代与递归实现无限级分类
- 迭代与递归实现无限级分类
- 递归实现无限级分类
- php实现无限级分类,通过循环和递归实现
- 递归输出指定目录下的所有文件名
- 爱德华无限分类目录树JSP版(EdwardTree V1.0)
- 在Xslt中用递归做无限级分类三部曲之初级篇
- php不用递归实现无限分类数据的树形格式化
- 递归读取目录及删除文件
- 用递归的方法实现无限分类