头像

PHP+Mysql递归无限分类

2017-07-15 11:55:32 收藏    来源:PHP代码   浏览()   评论 ( 0 )   

PHP+Mysql递归无限分类
我们面试程序开发的时候,经常会被问到递归的问题。今天我们在本文中使用PHP递归结合Mysql实现无限级分类。
查看演示 下载资源:0

手机扫码访问:

下载资源 下载积分:30

  递归简单的说就是一段程序代码的重复调用,当把代码写到一个自定义函数中,将参数等变量保存,函数中重复调用函数,直到达到某个条件才跳出,返回相应的数据。

  演示一:返回字符串

    echo get_str(0, 0); //输出无限级分类  
    function get_str($id = 0, $level = 0) { 
        global $str; 
        $sql = "select id,name from cats where pid= $id"; 
        $result = mysql_query($sql); //查询pid的子类的分类  
        if ($result && mysql_affected_rows()) {//如果有子类  
            $str .= '<ul>'; 
            $level++; 
            while ($row = mysql_fetch_array($result)) { //循环记录集  
                $str .= "<li style='padding-left:" . ($level * 20) . "px'>" . $row['id'] . "--" . $row['name'] . $level . "</li>"; //构建字符串  
                get_str($row['id'], $level); //调用get_str(),将记录集中的id参数传入函数中,继续查询下级  
            } 
     
            $str .= '</ul>'; 
        } 
        return $str; 
    }

  演示二:返回数组

    $list = get_array(0); //调用函数  
    print_r($list); //输出数组  
     
    function get_array($id = 0) { 
        $sql = "select id,name from cats where pid= $id"; 
        $result = mysql_query($sql); //查询子类  
        $arr = array(); 
        if ($result && mysql_affected_rows()) {//如果有子类  
            while ($rows = mysql_fetch_assoc($result)) { //循环记录集  
                $rows['list'] = get_array($rows['id']); //调用函数,传入参数,继续查询下级  
                $arr[] = $rows; //组合数组  
            } 
            return $arr; 
        } 
    }

  最后附上数据库信息:

    CREATE TABLE IF NOT EXISTS `cats` ( 
      `id` int(11) NOT NULL AUTO_INCREMENT, 
      `pid` int(11) DEFAULT '0', 
      `name` varchar(50) NOT NULL, 
      `ord` int(6) NOT NULL, 
      PRIMARY KEY (`id`) 
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=0;

    

标签: 递归分类
声明:转载请注明来源(PHP代码)并保留原文链接:http://www.phpdaima.com/hanshu-26.html
广告不存在
评论0

后面还有条评论,点击查看>>

温馨提示:为规范评论内容,垃圾评论一律封号...

PHP+Mysql递归无限分类
我的积分余额: 0.0 已下载次数: 0
所需积分:3030 开始下载
×