// 自己基于ThinkPHP写的,亲测可用 /** * [getNavPid 假设顶级分类的父ID是0,根据传入的子分类ID,查找子分类的顶级父类ID] * @param [int] $id [传入的子类ID] * @return [int] [返回顶级分类ID] */ function getNavPid($id){ $nav = M('nav')->find($id); if($nav['f_id'] != 0){ return getNavPid($nav['f_id']); } return $nav['id']; } // 以下两段是网友分享的,没有测试过 function foo($id) { $rs = mysql_query("select * from tbl_name where id='$id'"); $r = mysql_fetch_assoc($rs); if($r['pid'] != 0) return foo($r['pid']); return $r['id']; } function tree($arr,$id){ static $list=array(); foreach($arr as $u){ if($u[‘pid’]== $id){ $list[]=$u; If($u[‘pid’]>0){ tree($arr.$u[‘pid’]); } }   }   return $list; }