PHP无限分类树形类的深入解析
发布时间:2022-07-12 12:51 所属栏目:121 来源:互联网
导读:PHP无限分类,Google一下就能找到很多相关资料,思路比较拉风的,也是用得比较多的就是分类表至少有id,pid,name三个字段,id自增表分类,pid为父分类,name为分类名,这样就构成了一棵树,如下,算是我查询分类表得到的结果集。 复制代码 代码如下:www.CuoXI
PHP无限分类,Google一下就能找到很多相关资料,思路比较拉风的,也是用得比较多的就是分类表至少有id,pid,name三个字段,id自增表分类,pid为父分类,name为分类名,这样就构成了一棵树,如下,算是我查询分类表得到的结果集。 复制代码 代码如下:www.CuoXIn.com <?php //模拟PHP无限分类查询结果 return array( array( 'id'=>1, 'pid'=>0, 'name'=>'主页' ), array( 'id'=>2, 'pid'=>0, 'name'=>'新闻' ), array( 'id'=>3, 'pid'=>0, 'name'=>'媒体' ), array( 'id'=>7, 'pid'=>2, 'name'=>'海外新闻' ), array( 'id'=>8, 'pid'=>6, 'name'=>'州官新闻' ), array( 'id'=>9, 'pid'=>3, 'name'=>'音乐' ), array( 'id'=>10, 'pid'=>3, 'name'=>'电影' ), array( 'id'=>11, 'pid'=>3, 'name'=>'小说' ), array( 'id'=>12, 'pid'=>9, 'name'=>'铃声' ), array( 'id'=>13, 'pid'=>9, 'name'=>'流行音乐' ), array( 'id'=>14, 'pid'=>9, 'name'=>'古典音乐' ), array( 'id'=>15, 'pid'=>12, 'name'=>'热门铃声' ), array( 'id'=>16, 'pid'=>12, 'name'=>'搞笑铃声' ), array( 'id'=>17, 'pid'=>12, 'name'=>'MP3铃声' ), array( 'id'=>18, 'pid'=>17, 'name'=>'128K' ), array( 'id'=>19, 'pid'=>8, 'name'=>'娱乐新闻' ), array( 'id'=>20, 'pid'=>11, 'name'=>'穿越类' ), array( 'id'=>21, 'pid'=>11, 'name'=>'武侠类' ), ); ?> 拉风归拉风,但是那些文章提供的无限分类的类相关操作有点挫,直接把对数据库操作也封装进去了。也就是别人要用你这个类,还要跟你建一样的表,真TM恶心。由于项目要用到,所以自己写了一个PHP无限分类的类(也称树形类),没有数据库的操作,只需要实例化的时候传进去结果集,也就是树形数组。再执行leaf方法或navi方法即可得到想要的结果,下面请看源码,看完之后奉上smarty模板引擎的相应的模板递归方法。 在smarty模板中这样递归: 复制代码 代码如下:www.CuoXIn.com <!--导航--> <div id="navigator"> <{foreach $nav as $n}> <{if $n@iteration != $n@last}> <{$n.name}> -> <{else}> <{$n.name}> <{/if}> <{/foreach}> </div> <!--树形菜单--> <div id="menu"> <{function name=menu}> <ul> <{foreach $data as $entry}> <li> <span><{$entry.name}></span> <{*注意字段要改成自己的字段哦*}> <{if isset($entry.child)}> <{call name=menu data=$entry.child}> <{/if}> </li> <{/foreach}> </ul> <{/function}> <{call name=menu data=$arr}> <{*注意在这里$arr才是模板变量*}> </div> 当然,你也可以更改递归方法,用你想的标签不受拘束。HTML+PHP混编的递归方法这里就不贴了,我也懒得写,最讨厌混编,看着恶心,在这里推荐一下jake前辈的SpeedPHP框架,由于默认的引擎是smarty,我的这个PHP无限分类完全兼容SP框架。同样的,jquery的treeview插件和下拉菜单插件也完美支持。 对了,建议使用Smarty强大的缓存功能,缓存才是王道。 (编辑:ASP站长网) |
相关内容
网友评论
推荐文章
热点阅读