IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

递归并不一定非得是“自己调用自己的function”

司徒楠,一个PHP程序员 2010-06-05 11:37:45 累计浏览 4,246 次
本机暂存

-_-居然忘掉鸟while、for这么好的哥们。。。昨日晚上于家中折腾CrumbNavigation,即所谓面包屑导航。。一直在为递归纠结。。哎。。香烟过后,恍然大悟啊。。T.T…这个教训不能忘。

  1. $db = new mysqli('localhost','root','******','test',3306);
  2. $db->query("set names utf8");
  3. $cid = isset($_GET['cid']) ? intval($_GET['cid']) : 0;
  4. $data = getCrumbNavigation($cid);
  5. echo "OXOXOXOX鸟站 >> ".implode(' >> ',$data);echo'
    ';
  6. $query = $db->query("select * from cate where pid = {$cid} order by sort");
  7. if(@$query->num_rows > 0) {
  8.     $cate = array();
  9.     while($row=$query->fetch_assoc()) {
  10.         $cate[]=''.$row['id'].'">'.$row['name'].'';
  11.     }
  12.     echo '当前分类的下级分类有
    ';
  13.     echo implode('  ',$cate);
  14. } else{
  15.     echo '@.@木有了.';
  16. }
  17. function getCrumbNavigation($category_id){
  18.     $crumbNavigation = array();
  19.     global $db;
  20.     $old_id = $category_id;
  21.     while(true) {
  22.         $res = $db->query("select * from cate where id = {$category_id}");
  23.         if($res) {
  24.             $cate = $res->fetch_assoc();
  25.             $crumbNavigation[] = $cate['id']!=$old_id ? ''.$cate['id'].'">'.$cate['name'].'':$cate['name'];
  26.             if($cate['pid'] != 0) {
  27.                 $category_id = $cate['pid'];
  28.             } else{
  29.                 break;
  30.             }
  31.         } else{
  32.             break;
  33.         }
  34.     }
  35.     krsort($crumbNavigation);
  36.     return $crumbNavigation;
  37. }

效果如下(

同分类推荐文章

  1. Four Levels Of Customer Understanding (2026-05-22 21:00:00)
  2. 除法的意义 (2026-04-12 20:52:17)
  3. 第五章:共识算法 (2026-03-18 08:00:00)

查看更多 算法 文章 →

建议继续学习

  1. 为什么你写不好一个快速排序? 谈程序员的职业发展 (累计阅读 14,348)
  2. 关于memcache分布式一致性hash (累计阅读 11,730)
  3. 淘宝搜索:定向抓取网页技术漫谈 (累计阅读 9,445)
  4. PHP与递归Recursion (累计阅读 9,181)
  5. 你是那10%可以实现二分查找算法的程序员吗? (累计阅读 7,784)
  6. Hacker News 排名算法工作原理 (累计阅读 7,406)
  7. 神秘常量复出!用0x077CB531计算末尾0的个数 (累计阅读 6,501)
  8. 循环、迭代、遍历和递归 (累计阅读 5,501)
  9. 一些有意思的算法代码 (累计阅读 5,102)
  10. geohash:用字符串实现附近地点搜索 (累计阅读 5,085)