PHP创建无限级树型菜单

PHP创建无限级树型菜单
编写递归函数,考虑缓存,定义一些静态变量,以保存运行结果,并且多程序的效率非常有帮助。

以下步骤如下:

第一步:从数据库中取数据并把它放在一个数组。

将数据转换成一个树状数组,

STEP3:把这个树状数组的HTML代码。

第二步和第三步也可以合并为一步。

详情如下:

1。数据库设计:

创建表(` bg_cate `
` cate_id ` int(30)符号的非空auto_increment,
` cate_parentid ` int(30)符号默认'0',
` cate_name ` varchar(100)不为空,
` cate_intro ` varchar(500)默认为空,
` cate_order ` int(30)符号默认'0',
` cate_icon ` varchar(100)默认为空,
主键(` cate_id `)
)= MyISAM引擎默认的字符集utf8 auto_increment = 34;

-在桌子` bg_cate `出口数据

插入` bg_cate `(` cate_id `,` cate_parentid `,` cate_name `,` cate_intro `,` cate_order `,` cate_icon `)值
(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安全
(14, 10,'seagull框架,'seagull框架,0,'icons / 1。gif),
(15, 2,'javascript ','javascript学习',0,'icons / 1。gif),
(16, 2,设计模式,零,0,'icons / 1。gif),
(17, 2,软件工程、软件工程的学习,0,'icons / 1。gif),
(18, 3, 'Xiamen life', 'Xiamen life', 0,'icons/8.webp'),
(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,'icons / 9。gif);
2。从数据库中获取数据并将其放入数组中:

require_once。 / / PHP的类文件
对美元:Singleton()语句;
$ SQL
SELECT * FROM bg_cate美食
SQL;
美元美元数据= CON组>获得($ SQL);
/ / print_r($数据);
我使用的数据库操作是梨类库,最后的$数据数据格式如下所示:

阵列

{ 0 }数组

{ cate_id } = > 4
{ cate_parentid } = > 0
{ cate_name } = >过去的风
{ cate_intro } = >过去的记录
{ cate_order } = > 0
{ cate_icon } = >图标/ 6.webp

{ 1 }数组

{ cate_id } = > 5
{ cate_parentid } = > 0
{ cate_name } = >煮三
{ cate_intro } = >三级智慧
{ cate_order } = > 0
{ cate_icon } = >图标/ 3.webp

三.将最后一步的数据转换为树形数组的代码如下所示:

功能gettree($美元数据,PID)
{
美元树;
foreach($数据为$ K = $ V)
{
如果($ V { 'cate_parentid} = $ PID)
{找到父亲的儿子
$ V { 'cate_parentid} = gettree(美元的数据,美元'cate_idV { });
树{ } = $ v;
/ /复原($数据{ $ K });
}
}
返回$树;
}
美元树= gettree($数据,0);
$树的最终输出的数据格式如下所示:

阵列

{ 0 }数组

{ cate_id } = > 4
{ cate_parentid } = >
{ cate_name } = >过去的风
{ cate_intro } = >过去的记录
{ cate_order } = > 0
{ cate_icon } = >图标/ 6.webp

{ 1 }数组

{ cate_id } = > 5
{ cate_parentid } = >
{ cate_name } = >煮三
{ cate_intro } = >三级智慧
{ cate_order } = > 0
{ cate_icon } = >图标/ 3.webp

{ 2 }数组

{ cate_id } = > 2
{ cate_parentid } = >阵列

{ 0 }数组

{ cate_id } = > 8
{ cate_parentid } = >
{ cate_name } = > HTML
{ cate_intro } = > HTML
{ cate_order } = > 0
{ cate_icon } = >图标/ 1.webp

4,将树形数组转换为HTML代码,如下所示:

功能prochtml(美元树)
{
美元=;
foreach(美元树达T)
{
如果($ T { } = = 'cate_parentid ')
{
为HTML ={ } } { $ T 'cate_name ';
}
其他的
{
为HTML =T} { 'cate_name美元。;
HTML = prochtml美元($ T { 'cate_parentid});
美元= HTML。;
}
}
返回HTML;
}
回声prochtml(美元树);
输出HTML的代码格式是:

往事如风
三个王国沸腾
技术学习

HTML
CSS
PHP

PHP的基本知识
面向对象的程序设计
PHP安全
5。第三和第四步的代码也可以合并。代码如下:

功能gettree($美元数据,PID)
{
美元=;
foreach($数据为$ K = $ V)
{
如果($ V { 'cate_parentid} = $ PID)
{找到父亲的儿子
为HTML = 。$ V { 'cate_name};
HTML = gettree美元(美元$ V数据,'cate_id{ });
美元= HTML。;
}
}
返回HTML;
}
回声gettree($数据,0);
6,最后加一点css样式,效果如下:

整个思维过程非常清晰,非常适合第一次创建无限树型的朋友学习,希望大家有收获。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部