2019独角兽企业重金招聘Python工程师标准>>>

大概步骤如下: 首先到数据库取数据,放到一个数组, 然后把数据转化为一个树型状的数组, 最后把这个树型状的数组转为html代码。 也可以将第二步和第三步合为一步。

详细如下: 1。数据库设计: 脚本如下:

CREATE TABLE `bg_cate` (
`cate_Id` int(30) unsigned NOT NULL AUTO_INCREMENT,
`cate_ParentId` int(30) unsigned DEFAULT '0',
`cate_Name` varchar(100) NOT NULL,
`cate_Intro` varchar(500) DEFAULT NULL,
`cate_Order` int(30) unsigned DEFAULT '0',
`cate_Icon` varchar(100) DEFAULT NULL,
PRIMARY KEY (`cate_Id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=34 ;--
-- 导出表中的数据 `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安全', '讲述php安全', 0, 'icons/1.gif'),
(14, 10, 'seagull framework', 'seagull framework', 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, 'icons/9.gif');

2。到数据库取数据,放到数组。

require_once './classes/MyDB.php';
$con = MyDB::singleton();
$sql = <<<SQLselect * from bg_cate cate
SQL;
$data = $con->getAll($sql);
//print_r($data);

数据库操作我用的是pear类库。 最后的$data的数据格式如下:

Array
([0] => Array([cate_Id] => 4[cate_ParentId] => 0[cate_Name] => 往事如风[cate_Intro] => 记录往事[cate_Order] => 0[cate_Icon] => icons/6.gif)[1] => Array([cate_Id] => 5[cate_ParentId] => 0[cate_Name] => 水煮三国[cate_Intro] => 品位三国智慧[cate_Order] => 0[cate_Icon] => icons/3.gif)
。。。。。。

3。把上一步的数据转为树型状的数组 代码如下:

function getTree($data, $pId)
{
$tree = '';
foreach($data as $k => $v)
{if($v['cate_ParentId'] == $pId){         //父亲找到儿子$v['cate_ParentId'] = getTree($data, $v['cate_Id']);$tree[] = $v;//unset($data[$k]);}
}
return $tree;
}
$tree = getTree($data, 0);

最后输出$tree的数据格式为:

Array
([0] => Array([cate_Id] => 4[cate_ParentId] => [cate_Name] => 往事如风[cate_Intro] => 记录往事[cate_Order] => 0[cate_Icon] => icons/6.gif)[1] => Array([cate_Id] => 5[cate_ParentId] => [cate_Name] => 水煮三国[cate_Intro] => 品位三国智慧[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学习[cate_Order] => 0[cate_Icon] => icons/1.gif)
。。。。。。。。。。。

4。把树型状数组转为html 代码如下:

function procHtml($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."</li>";}
}
return $html ? '<ul>'.$html.'</ul>' : $html ;
}
echo procHtml($tree);
输出的html的代码格式为:
<ul>
<li>往事如风</li>
<li>水煮三国</li>
<li>技术学习<ul><li>html</li><li>css</li><li>php<ul><li>php基础知识</li><li>oop</li><li>php安全</li>
。。。。。。。。。。。。。。。。5。也可以把第3和第4步的代码合在一起,代码如下:
function getTree($data, $pId)
{
$html = '';
foreach($data as $k => $v)
{if($v['cate_ParentId'] == $pId){         //父亲找到儿子$html .= "<li>".$v['cate_Name'];$html .= getTree($data, $v['cate_Id']);$html = $html."</li>";}
}
return $html ? '<ul>'.$html.'</ul>' : $html ;
}
echo getTree($data, 0);

转载自:http://www.9958.pw/post/php_cat_pid

转载于:https://my.oschina.net/u/1179286/blog/653108

php实现无限级树型菜单(函数递归算法)相关推荐

  1. php创建无限级树型菜单以及三级联动菜单

    http://www.php.cn/php-weizijiaocheng-373500.html 这篇文章主要介绍了php创建无限级树型菜单 ,主要使用的是递归函数,感兴趣的小伙伴们可以参考一下 写递 ...

  2. php动态创建菜单,php创建无限级树型菜单

    写递归函数,可考虑缓存,定义一些静态变量来存上一次运行的结果,多程序运行效率很有帮助.. 大概步骤如下: step1:到数据库取数据,放到一个数组, step2:把数据转化为一个树型状的数组, ste ...

  3. php树递归算法,php实现无限级树型菜单(函数递归算法)

    大概步骤如下: 首先到数据库取数据,放到一个数组, 然后把数据转化为一个树型状的数组, 最后把这个树型状的数组转为html代码. 也可以将第二步和第三步合为一步. 详细如下: 1.数据库设计: 脚本如 ...

  4. php 数据库 无限级菜单,php实现无限级树型菜单(函数递归算法)[一]

    大概步骤如下: 首先到数据库取数据,放到一个数组, 然后把数据转化为一个树型状的数组, 最后把这个树型状的数组转为html代码. 也可以将第二步和第三步合为一步. 详细如下: 1.数据库设计: 脚本如 ...

  5. php通用的树型类创建无限级树型菜单

    生成树型结构所需要的2维数组,var $arr = array()数组格式如下: array( 1 => array('id'=>'1','parentID'=>0,'name'=& ...

  6. java 动态树_使用dtree构建动态树型菜单

    dtree是一个免费的javascript脚本,只需定义有限的几个参数,就可以做出漂亮的树型菜单.下载目录: 以下是dtree的用法示例: 1)初始化菜单 2)调用函数 2.jsp动态实现 分以下步骤 ...

  7. html菜单树实现原理,HTML_DIV+CSS构成树型菜单,这是用DIV+CSS+JS构成的树型菜单 - phpStudy...

    DIV+CSS构成树型菜单 这是用DIV+CSS+JS构成的树型菜单,采用列表,符合WEB标准,在大多数WIN浏览器下,兼容性不错, xhtml见效果页,我现在做的是二个菜单,如果需要添加,可把 .. ...

  8. CSS+JS灰色树型菜单导航代码

    代码简介: CSS+JS打造的树型菜单,没有怎么美化,颜色看上去也不很美,提供一种思路,真想用的朋友好好修改一下颜色,里面都有注释,相信通过你的努力,它最终的效果一定很漂亮. 代码内容: <!D ...

  9. php创建多级栏目_用PHP实现多级树型菜单

    用PHP实现多级树型菜单 更新时间:2006年10月09日 00:00:00   作者: //树型目录结构模板程序 //菜单目录库字段说明: //menu_id 菜单项目 id //menu 菜单名称 ...

最新文章

  1. 【Qt】Qt再学习(十六):QObject::connect: Cannot queue arguments of type ‘QString‘
  2. 知识图谱简史:从1950到2019
  3. windows中PyCharm的安装和使用
  4. Oracle Varchar2 字段转成Clob字段
  5. gprof + kprof + gprof2dot (性能 与 函数调用图)-
  6. Redis集群在线分片
  7. springboot python整合_SpringCloud 整合 Python - Flask
  8. 网页校验器:含有Flash的网页如何通过校验 ?
  9. 华为认证hcnp题库多久更新一次?华为hcnp认证值不值得考?
  10. 商城项目html pc,Vue实战篇(PC端商城项目)
  11. alin的学习之路(Qt篇:三)(常用控件,自定义控件,事件捕捉)
  12. 基于Python的Climate Indices库计算SPEI(标准化降水蒸散发指数)01—Climate Indices库的下载和安装
  13. Linux查看占用内存的进程
  14. python链家数据分析_利用Python分析北京链家二手房数据
  15. App渠道安装来源识别与匹配
  16. Java笔记——Java 实现金额小写转大写
  17. 越狠越有饭吃,越不狠越没饭吃
  18. 生物信息学(3)——双序列比对之BLAST算法简介
  19. MP4转RTSP推流(ffmpeg和easydarwin)
  20. android无线充电器推荐,和安卓通用的无线充电器门派推荐

热门文章

  1. day63-webservice 08.在web项目中配置带有接口的webservice服务
  2. Day7—socket进阶
  3. [导入]Reporting Services 5: Extensions Custom Report Item
  4. 诗和远方:无题(四十四)- 曾经写给妹子的一首诗
  5. Protobuf生成Java代码(命令行)
  6. idea部署项目com.intellij.javaee.oss.admin.jmx.JmxAdminException-未使用最新版本的war包
  7. c语言 傲娇的十六进制,语言拟人向:来自Python、JAVA、C语言的“傲娇”自我介绍...
  8. 网页版本的飞行日志分析平台是_一个轻便的实时日志收集平台wslog
  9. PyQt5笔记(07) -- 变换控件颜色
  10. 学习一门编程语言的基本步骤