递归删除一个节点以及该节点下的所有节点示例


Posted in PHP onMarch 19, 2014

有的时候删除信息的时候,需要把这条信息下的所有的都删除,这个时候就需要递归删除了。下面是我在做部门管理中的删除部门功能的时候写的一段递归删除一个部门以及它的所有子部门的一段代码。仅供大家参考和自己以后备用。

下面是我的一段代码的展示:

/* 
* 修改一条部门信息 
*/ 
function del($bumen_id){ 
$sql="select bumen_id from lxsm_bumen where topbumen_id=".$bumen_id; //查询以topbumen_id为$bumen_id的bumen_id 
$delsql="delete from lxsm_bumen where bumen_id=".$bumen_id; //删除bumen_id为$bumen_id的部门信息 
$xiaji_id=$this->DB->fetch_assoc($sql); 
if($xiaji_id){ 
foreach($xiaji_id as $id){ 
$res=$this->del($id[bumen_id]); 
} 
} 
$result=$this->DB->query($delsql); 
if($result){ 
return true; 
} 
else{ 
return false; 
} 
}

注释:这里的topbumen_id是部门信息中的上级部门的id号,fetch_assoc()函数是自己已经封装好的函数,是把查询得到的所有内容返回成一个数组。

心得体会:这是自己第一次写递归算法,写得还很稚嫩,不管怎样功能是实现了。我感觉写递归方面的代码的时候,自己先画好一个树状结构,认清其结构后,根据自己想要得到的效果,先在脑子里模拟一步一步的执行。比如这里的删除,想要删除一个部门,就得删除自己并且查找以自己为上级部门的子部门有哪些,把子部门一个一个地遍历得到,这时候子部门的操作,就和它的上级部门的删除一样,需要删除自己并且查找它的子部门,这样一来就有个类似重复的操作,子部门的操作和上级部门的操作经历的步骤是一样的,因此在子部门的遍历中让它执行这个本身的函数。这样一来就形成了一个递归算法。

PHP 相关文章推荐
浅析php面向对象public private protected 访问修饰符
Jun 30 PHP
PHP文件上传主要代码讲解
Sep 30 PHP
php中文验证码实现方法
Jun 18 PHP
PHP实现获取文件后缀名的几种常用方法
Aug 08 PHP
php实现处理输入转义字符的代码
Nov 08 PHP
10个对初学者非常有用的PHP技巧
Apr 06 PHP
php将文件夹打包成zip文件的简单实现方法
Oct 04 PHP
微信公众号模板消息群发php代码示例
Dec 29 PHP
Python中使用django form表单验证的方法
Jan 16 PHP
详谈php中 strtr 和 str_replace 的效率问题
May 14 PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 PHP
php nginx 实时输出的简单实现方法
Jan 21 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
Mar 19 #PHP
php实现保存submit内容之后禁止刷新
Mar 19 #PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
Mar 18 #PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
Mar 18 #PHP
PHP中获取时间的下一周下个月的方法
Mar 18 #PHP
php读取目录所有文件信息dir示例
Mar 18 #PHP
PHP将两个关联数组合并函数提高函数效率
Mar 18 #PHP
You might like
thinkPHP5框架路由常用知识点汇总
2019/09/15 PHP
一些常用的JS功能函数代码
2009/06/23 Javascript
js类的静态属性和实例属性的理解
2009/10/01 Javascript
30个精美的jQuery幻灯片效果插件和教程
2011/08/23 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
js实现适用于素材网站的黑色多级菜单导航条效果
2015/08/24 Javascript
jQuery实现Flash效果上下翻动的中英文导航菜单代码
2015/09/22 Javascript
学习JavaScript图片预加载模块
2016/11/07 Javascript
详解react-webpack2-热模块替换[HMR]
2017/08/03 Javascript
Bootstrap一款超好用的前端框架
2017/09/25 Javascript
JS手机端touch事件计算滑动距离的方法示例
2017/10/26 Javascript
详解webpack-dev-server使用http-proxy解决跨域问题
2018/01/13 Javascript
详解Vue-cli中的静态资源管理(src/assets和static/的区别)
2018/06/19 Javascript
JavaScript去掉数组重复项的方法分析【测试可用】
2018/07/19 Javascript
vue项目打包后怎样优雅的解决跨域
2019/05/26 Javascript
在layui中select更改后生效的方法
2019/09/05 Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
2020/08/04 Javascript
[03:14]DOTA2斧王 英雄基础教程
2013/11/26 DOTA
python实现进程间通信简单实例
2014/07/23 Python
Python2和Python3中print的用法示例总结
2017/10/25 Python
python文件选择对话框的操作方法
2019/06/27 Python
Django 静态文件配置过程详解
2019/07/23 Python
Pycharm远程调试原理及具体配置详解
2019/08/08 Python
Python2和3字符编码的区别知识点整理
2019/08/08 Python
Python实现多线程/多进程的TCP服务器
2019/09/03 Python
Python中常用的高阶函数实例详解
2020/02/21 Python
纽约21世纪百货官网:Century 21
2016/08/27 全球购物
怀旧收藏品和经典纪念品:Betty’s Attic
2018/08/29 全球购物
乐观大学生的自我评价
2014/01/10 职场文书
环境工程专业自荐信范文
2014/03/18 职场文书
简单租房协议书(范本)
2014/10/13 职场文书
2014年班组建设工作总结
2014/12/01 职场文书
歌咏比赛口号大全
2015/12/25 职场文书
MySQL 逻辑备份与恢复测试的相关总结
2021/05/14 MySQL
解决Swagger2返回map复杂结构不能解析的问题
2021/07/02 Java/Android
php解析非标准json、非规范json的方式实例
2022/05/10 PHP