递归并不一定非得是“自己调用自己的function”
浏览:3853次 出处信息
-_-居然忘掉鸟while、for这么好的哥们。。。昨日晚上于家中折腾CrumbNavigation,即所谓面包屑导航。。一直在为递归纠结。。哎。。香烟过后,恍然大悟啊。。T.T…这个教训不能忘。
- $db = new mysqli('localhost','root','******','test',3306);
- $db->query("set names utf8");
- $cid = isset($_GET['cid']) ? intval($_GET['cid']) : 0;
- $data = getCrumbNavigation($cid);
- echo "OXOXOXOX鸟站 >> ".implode(' >> ',$data);echo '
'; - $query = $db->query("select * from cate where pid = {$cid} order by sort");
- if(@$query->num_rows > 0) {
- $cate = array();
- while($row=$query->fetch_assoc()) {
- $cate[]=''.$row['id'].'">'.$row['name'].'';
- }
- echo '当前分类的下级分类有
'; - echo implode(' ',$cate);
- } else {
- echo '@.@木有了.';
- }
- function getCrumbNavigation($category_id) {
- $crumbNavigation = array();
- global $db;
- $old_id = $category_id;
- while(true) {
- $res = $db->query("select * from cate where id = {$category_id}");
- if($res) {
- $cate = $res->fetch_assoc();
- $crumbNavigation[] = $cate['id']!=$old_id ? ''.$cate['id'].'">'.$cate['name'].'':$cate['name'];
- if($cate['pid'] != 0) {
- $category_id = $cate['pid'];
- } else {
- break;
- }
- } else {
- break;
- }
- }
- krsort($crumbNavigation);
- return $crumbNavigation;
- }
效果如下(
建议继续学习:
- 120个优秀的水平导航设计 (阅读:74936)
- PHP与递归Recursion (阅读:8850)
- 网站导航设计的6大分类 (阅读:8723)
- 循环、迭代、遍历和递归 (阅读:5101)
- 我们来做一个会呼吸的菜单吧!! (阅读:3883)
- 小心递归次数限制 (阅读:3670)
- 与众不同易,精益求精难 — QQ导航改版设计心得 (阅读:3518)
- PHP正则之递归匹配 (阅读:3281)
- 用面包屑来简化多层的tabs (阅读:3230)
- 网站导航设计模式指南 (阅读:3143)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:web socket 心跳包的实现方案
后一篇:令人纠结的php几率算法问题 >>
文章信息
- 作者:cevin 来源: 司徒楠,一个PHP程序员
- 标签: 导航 递归 面包屑
- 发布时间:2010-06-05 11:37:45
建议继续学习
近3天十大热文
-
[869] WordPress插件开发 -- 在插件使用 -
[136] 解决 nginx 反向代理网页首尾出现神秘字 -
[57] 整理了一份招PHP高级工程师的面试题 -
[56] 分享一个JQUERY颜色选择插件 -
[54] 用 Jquery 模拟 select -
[54] 如何保证一个程序在单台服务器上只有唯一实例( -
[54] CloudSMS:免费匿名的云短信 -
[53] Innodb分表太多或者表分区太多,会导致内 -
[53] 全站换域名时利用nginx和javascri -
[51] jQuery性能优化指南
