php 递归分销角色,PHP递归无限分类

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

25a79f5b69f0bd572fbb0a1ca1b23b58.png

难易:初级

下载资源

下载积分:

50

积分

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

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 .= '

  • ';

$level++;

while ($row = mysql_fetch_array($result)) { //循环记录集

$str .= "

" . $row['id'] . "--" . $row['name'] . $level . ""; //构建字符串

get_str($row['id'], $level); //调用get_str(),将记录集中的id参数传入函数中,继续查询下级

}

$str .= '

';

}

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;

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/272725.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android音频系统之AudioPolicyService

地址:http://blog.csdn.net/edmond999/article/details/18599327 1.1 AudioPolicy Service 在AudioFlinger小节,我们反复强调它只是策略的执行者,而AudioPolicyService则是策略的制定者。这种分离方式有效地降低了整个系统的藕合性&#xff0…

程序员常去的14个顶级开发社区

我们来看一下程序员经常去的 14 个顶级开发者社区,如果你还不知道它们,那么赶紧去看看,也许会有意想不到的收获。一、Stack Overflow9 月份,Stack Overflow 也将迎来其 6 岁的生日,毫无疑问,Stack Overflo…

basename php 中文,php basename不支持中文怎么办

不久前遇到一段代码使用了basename,我文件名是中文的,每次返回都只有后缀。后来发现basename函数有猫腻,不支持中文文件名,但凡有以中文开头的文件名将被忽略了。函数说明/*** 从路径中返回文件名* param string $path* 在Windows…

C#特性-表达式树

表达式树ExpressionTree 表达式树基础 转载需注明出处:http://www.cnblogs.com/tianfan/刚接触LINQ的人往往觉得表达式树很不容易理解。通过这篇文章我希望大家看到它其实并不像想象中那么难。您只要有普通的LINQ知识便可以轻松理解本文。表达式树提供一个将可执行代…

程序员的一个好习惯,你有几个?

在很多外人看来,作为我们程序员这个行业只要会敲代码会改bug基本就可以了,但是现在行业人员几近饱和,没有过硬的几把刷子就想着可以甩掉身后的大部队也是不可能的。所以说我们要不断的学习不断的充实自己让企业在裁员的时候压根就考虑不到我们的头上来。…

matlab四维图程序,Matlab 四维图形绘制

这个问题可以用slice命令实现:%%%%%%clear all[x,y,z] meshgrid(0:.5:10,0:.5:10,0:.5:10);c x.^2y.^2z.^2;xs [0,2,4,6,8,10];ys [4];zs [6]; % xs,ys,zs可决定切片形式和位置,help slice可明白其具体含义slice(x,y,z,c,xs,ys,zs)colormap hsv当然…

cURL模拟POST方式提交数据

curl_post.php文件: 1 $url http://localhost/test/curl_post_deal.php;2 3 $post_data array( 4 username > cURL, 5 age > 18, 6 sex > male 7 ); 8 $ch curl_init(); 9 10 curl_setopt($ch, CURLOPT_URL, $url); //请求的地址 11 curl_setopt(…

2017已过半,这半年,你累吗?

大半年下来有人问你挣了多少钱却从来没有人问你最近的日子你累不累近来你受了多少委屈近来有多少心酸近来经历过多少艰难最近付出了多少不被人知的辛苦有时候真的很累、很累但是所有的累只能一笑而过这个累是自己经历的积累这个累是自己身上应该有的责任除了坚强,别…

mysql 5.5 压力测试,mysql 压力测试

mysql 压力测试sysbench支持的测试模式:1、CPU运算性能2、磁盘IO性能3、调度程序性能4、内存分配及传输速度5、POSIX线程性能6、数据库性能(OLTP基准测试)目前sysbench主要支持 mysql,drizzle,pgsql,oracle 等几种数据库。二、编译安装sysbench[roottest package]# …

自学编程的六点技巧

有一天,我的一个在学编程的朋友问我:“我想快速学习编程,你有什么好的推荐吗?我曾在上大学的时候自学过编程,这么多年过去了,我意识到我或许是在用最困难的方式去学习和了解编程。本来我完全可以用更快的速…

AngularJs $anchorScroll、$controller、$document

$anchorScroll 根据HTML5的规则,当调用这个函数时,它检查当前的url的hash值并且滚动到相应的元素。 监听$location.hash()并且滚动到url指定的锚点的地方。可以通过$anchorScrollProvider.disableAutoScrolling()禁用。 依赖:$window $loca…

Jquery操作复选框总结

1、获取单个checkbox选中项(三种写法)$("input:checkbox:checked").val()或者$("input:[typecheckbox]:checked").val();或者$("input:[nameck]:checked").val();2、 获取多个checkbox选中项$(input:checkbox).each(function() {if ($(this).att…

java对五排六列考生随机排座,Java入门第三季6-5扩展练习-随机字符串排序

原课程地址https://www.imooc.com/video/4254* 扩展练习要求* 利用Collections.sort()方法对泛型为String的List进行排序版本2* 1.创建完List之后,往其中添加10条随机字符串* 2.每条字符串的长度为10以内的随机整数* 3.每条字符串的每个字符都是随机生成的&#xff…

信息安全系统设计基础第十周学习总结

第八章 异常控制流 (1)控制流:控制转移序列。 控制转移:从一条指令到下一条指令。 异常控制流:现代操作系统通过使控制流发生突变来对系统状态做出反应,这些突变称为异常控制流。 (2&#xff09…

MVC、 MVP、 MVVM之间的区别

一、 简介三者的目的都是分离关注,使得UI更容易变换(从Winform变为Webform),使得UI更容易进行单元测试。二、MVC/MVP1 、MVC1、View接受用户的交互请求2、View将请求转交给Controller3、Controller操作Model进行数据更新4、数据更…

java散列法的运用实例,Java HashMap compute() 使用方法及示例

Java HashMap compute() 使用方法及示例Java HashMap compute()方法计算一个新值,并将其与哈希映射中的指定键相关联。compute()方法的语法为:hashmap.compute(K key, BiFunction remappingFunction)compute()参数compute()方法有两个参数:ke…

team geek

1. 转载自http://book.douban.com/review/6007037/,版权归丸子(^.^)v所有。 New Google employees (we call “Nooglers”) often ask me what makes me effective at what I do. I tell them only half-jokingly that it’s very simple: I do the Right Thing for…

程序员经典语录

1.A good programmer is someone who always looks both ways before crossing a one-way street. (Doug Linder)好的程序员即使在过单行道时也总是会环顾两边。2.Don’t worry if it doesn’t work right. If everything did, you’d be out of a job. (Mosher’s Law of Soft…

数字图像处理应用matlab,数字图像处理与应用(MATLAB版)

第 1章 绪论 1n1.1 图像的概念 1n1.2 图像的分类 2n1.3 图像的表示 2n1.3.1 图像信号的表示 2n1.3.2 数字图像的表示 3n1.3.3 颜色模型 4n1.4 …

HDU 3948 不同回文子串个数

集训队论文中有求不同子串个数的做法,就是扫一遍height数组,过程中根据height数组进行去重。对于本题也是雷同的,只是每一次不是根据与排名在上一位的LCP去重,而是与上一次统计对答案有贡献的后缀进行比较去重。 几组数据 abacaba…