素材牛VIP会员

PHP递归无限分类实例

 所属分类:PHP实例-函数/算法,常用实例教程,MySQL

 浏览:5095次  评论:16次  更新时间:2020-09-03
牛币素材VIP可免积分下载
PHP递归无限分类实例
积分说明:注册即送10牛币,每日签到可获得5牛币,成为VIP会员可永久免牛币下载!   充值积分   充值会员   更多说明»
素材描述:我们面试程序开发的时候,经常会被问到递归的问题。今天我们在本文中以“素材火的特效分类表”作为演示,使用PHP递归结合Mysql实现无限级分类。
 标签:递归分类无限

基础属性

  • 难易初级
  • 语言PHP
  • 数据库MySql

详细介绍

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

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; 
    } 
}

讨论这个素材(16)回答他人问题或分享使用心得会奖励牛币

通***程  
2020年03月07日

正好研究到了递归

回复
最***哥  
2020年03月09日

相当实用的效果

回复
爱***丘  
2020年03月12日

可以用在后台

回复
龙***爸  
2020年04月06日

我也不会这个

回复
陌***3  
2020年04月11日

太简单了,这个,有没有整体的

回复
云***_  
2020年04月14日

厉害啦,学习啦!!

回复
雪***月  
2020年05月12日

不太懂,下载了还是不清楚

回复
mo***99  
2020年06月26日

NB。有借鉴意义。

回复
风***j  
2020年07月03日

我要下载下来看看 学习递归

回复
黑***枯  
2020年07月19日

值得借鉴,正好可以学习

回复
黑***黑  
2020年07月30日

可以用到菜单上

回复
qi***pu  
2020年08月30日

直接用固定的数组就好了,不用去查数据库这么麻烦 的,只是演示呀

回复
wx***78  VIP2
2020年09月24日

要用到递归?

回复
wx***78  VIP2
2020年09月24日

值得借鉴,正好可以用到

回复
wx***36  
2023年01月28日

看着不错!!

回复
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取
我的牛币余额:0
所需牛币:50 开始下载

牛币获取:签到、评论、充值    » 在线充值(10牛币=1元)