手机版

php创建无限级树型菜单

时间:2021-09-27 来源:互联网 编辑:宝哥软件园 浏览:

写递归函数,可考虑缓存,定义一些静态变量来存上一次运行的结果,多程序运行效率很有帮助。大概步骤如下:步骤1:到数据库取数据,放到一个数组,步骤2:把数据转化为一个树型状的数组,步骤3:把这个树型状的数组转为超文本标记语言代码。也可以将第二步和第三步合为一步。详细如下:1、数据库设计:

CREATE TABLE ` BG _ cate `(` cate _ id ` int(30)无符号不为空自动增量,` cate_ParentId` int(30)无符号DEFAULT '0 ',' cate _ name ' varchar(100)NOT NULL,' cate _ intro ' varchar(500)DEFAULT NULL,' cate _ order ' int(30)无符号DEFAULT '0 ',' cate _ icon ' varchar(100)DEFAULT NULL,PRIMAry KEY(' cate _ id `)ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO _ INDEX=1-导出表中的数据“BG _ cate ”- INSERT INTO“BG _ cate”(“cate _ id”、“cate_ParentId”、“cate_Name”、“cate_Intro”、“cate_Order”、“cate _ icon ”) VALUES(4,0往事如风, '记录往事,0,' icons/6.gif ',(5,0 '水煮三国', '品位三国智慧,0,' icons/3.gif ',(2,0 '技术学习', '平时学习的一些笔记,欢迎批评指正,0,' icons/18.gif ',(3,0 '生活点滴', '记录生活点滴,0,' icons/2.gif ',(6,0 '栀子花开', '青春无限,0,' icons/8.gif ',(7,0 '假日休闲', '悠闲、自在,0,' icons/24.gif ',(8,2,' html ',' html学习,0,' icons/1.gif '),(9,2,' css ',' css学习,0,' icons/1.gif ',(10,2,' php ',' php学习,0,' icons/18.gif ',(11,10,' php基础知识,' php基础知识,0,' icons/1.gif ',(12,10,' oop ',' oop ',0,' icons/1.gif ',(13,10,' php安全', '讲述服务器端编程语言(专业超文本预处理器的缩写)安全,0,' icons/1.gif ',(14,10 '海鸥框架','海鸥框架,0,' icons/1.gif '),(15,2," javascript "," javascript学习,0,' icons/1.gif ',(16,2 '设计模式,NULL,0,' icons/1.gif ',(17,2 '软件工程', '软件工程学习,0,' icons/1.gif ',(18,3 '厦门生活', '厦门生活,0,' icons/8.gif ',(19,3 '大学生活', '大学生活,0,' icons/8.gif ',(20,3 '童年生活', '童年生活,0,' icons/15.gif ',(21,19 '学习, '学习,0,' icons/1.gif ',(22,19 '运动', '运动,0,' icons/16.gif ',(23,19 '旅游', '旅游,0,' icons/24.gif ',(24,22 '排球', '排球,0,' icons/9.gif ',(25,22 '篮球', '篮球,0,' icons/9.gif ',(26,22 '羽毛球', '羽毛球,0,' icons/9.gif ',(27,22 '乒乓球', '乒乓球,0,'图标/9。 gif ');2、到数据库取数据,放到数组:

要求一次./class/MyDB。PHP ';$ con=mydb :3360 singleton();$sql=从bg _凯特中选择的SQL *;$ data=$ con-GetAll($ SQL);//print _ r($ data);数据库操作我用的是梨树类库,最后的$数据的数据格式如下:

数组([0]=数组([cate _ Id]=4[cate _ ParentId]=0[cate _ Name]=往事如风[美食_介绍]=记录往事[cate _ Order]=0[cate _ Icon]=icons/6。gif)[1]=Array([cate _ Id]=5[cate _ ParentId]=0[cate _ Name]=水煮三国[美食_介绍]=品位三国智慧[凯特_订单]=0[凯特_图标]=图标/3.gif )3、把上一步的数据转为树型状的数组代码如下:

函数getTree($data,$ PiD){ $ tree=' ';foreach($数据为$ k=$ v){ if($ v[' cate _ parent id ']==$ PiD){//父亲找到儿子$ v[' cate _ ParentId ']=getTree($ data,$ v[' cate _ Id ']);$ tree[]=$ v;//unset($ data[$ k]);} }返回$ tree}$tree=getTree($data,0);最后输出$tree的数据格式为:

数组([0]=数组([cate _ Id]=4[cate _ ParentId]=[cate _ Name]=往事如风[美食_介绍]=记录往事[cate _ Order]=0[cate _ Icon]=icons/6。gif)[1]=Array([cate _ Id]=5[cate _ ParentId]=[cate _ Name]=水煮三国[美食_介绍]=品位三国智慧[cate _ Order]=0[cate _ Icon]=icons/3。gif)[2]=Array([cate _ Id]=2[cate _ ParentId]=Array([0]=Array([cate _ Id]=8[cate _ ParentId]=[cate _ Name]=html[cate _ Intro]=html学习[凯特_订单]=0[凯特_图标]=图标/1.gif )4、把树型状数组转为超文本标记语言代码如下:

函数proc HTMl($ tree){ $ HTMl=' ';foreach($ tree as $ t){ if($ t[' cate _ ParentId ']==' '){ $ html .=' Li { $ t[' cate _ Name ']}/Li ';} else { $html .='li ' .$ t[' cate _ Name '];$html .=ProcHTML($ t[' cate _ ParentID ']);$html=$html ./李;} }返回$html?ul ' .$html ./ul ' : $ html;} echo ProcHTML($ tree);输出的超文本标记语言的代码格式为:ulli往事如风/莉莉水煮三国/莉莉技术学习ul Li tml/Li Li cs/Li Li HP ul Li HP基础知识/Li Li op/Li Li HP安全/li5,也可以把第3和第四步的代码合在一起,代码如下:

函数getTree($data,$ PiD){ $ html=' ';foreach($数据为$ k=$ v){ if($ v[' cate _ parent id ']==$ PiD){//父亲找到儿子$html .='li ' .$ v[' cate _ Name '];$html .=getTree($data,$ v[' cate _ Id ']);$html=$html ./李;} }返回$html?ul ' .$html ./ul ' : $ html;} echo Getree($ data,0);6、最后再加点钢性铸铁样式,效果如下:

整个过程思路很清晰,非常适合第一次创建无限级树型的朋友学习,希望大家都有所收获。

版权声明:php创建无限级树型菜单是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。