最新赞助活动温馨提示:自愿赞助服务器费用,学生和没有工作的整站资源免费下载!
头像

PHP递归无限分类

来源:http://www.erdangjiade.com/ 沐浴春风 2015-05-10 09:30浏览(1909)

我们面试程序开发的时候,经常会被问到递归的问题。今天我们在本文中以“二当家的的特效分类表”作为演示,使用PHP递归结合Mysql实现无限级分类。

0、请不要问“在不在”之类的问题,有问题直接问!1、学生或暂时没有工作的童鞋,整站资源免费下载!2、¥9.9充值终身VIP会员,加我微信,826096331 拉你进VIP群学习!3、程序员加油,技术改变世界。 在线 充值

分类:PHP > 分类 难易:初级
查看演示 下载资源:

加我微信,拉你进VIP群学习:

下载资源 下载积分: 30 积分

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

cats表:

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=132 ;

INSERT INTO `cats` (`id`, `pid`, `name`, `ord`) VALUES
(1, 0, '特效分类', 1),
(2, 0, '难易程度', 2),
(3, 2, '入门级', 1),
(4, 2, '初级', 2),
(5, 2, '中级', 3),
(6, 2, '高级', 4),
(7, 1, '图片代码', 1),
(8, 1, '导航菜单', 2),
(9, 1, '选项卡/滑动门', 3),
......

演示一:返回字符串

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;
    }
}
标签: 分类递归无限
声明:本文为原创文章,如需转载,请注明来源erdangjiade.com并保留原文链接:https://www.erdangjiade.com/php/112.html
评论3
头像

友情提示:垃圾评论一律封号 加我微信:826096331拉你进VIP群学习群

  • 头像 板凳
    06-03 11:26
    温馨的久违
    过时了,,,,<br />
  • 头像 椅子
    06-28 09:44
    小丹尼斯.里奇
    二当家,大当家在哪呢高兴
  • 头像 沙发
    06-16 11:14
    crystal
    找了好久的递归,挺不错的
1 2