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


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部分常见问题总结
Oct 09 PHP
推荐文章系统(一)
Oct 09 PHP
php 获取百度的热词数据的代码
Feb 18 PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
Jan 22 PHP
PHP实现Javascript中的escape及unescape函数代码分享
Feb 10 PHP
php实现将任意进制数转换成10进制的方法
Apr 17 PHP
PHP5.2下preg_replace函数的问题
May 08 PHP
php结合web uploader插件实现分片上传文件
May 10 PHP
PHP类相关知识点实例总结
Sep 28 PHP
PHP7下协程的实现方法详解
Dec 17 PHP
PHP中的自动加载操作实现方法详解
Aug 06 PHP
laravel框架中视图的基本使用方法分析
Nov 23 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
PHP表单数据写入MySQL数据库的代码
2016/05/31 PHP
在PHP语言中使用JSON和将json还原成数组的方法
2016/07/19 PHP
url 编码 js url传参中文乱码解决方案
2010/04/11 Javascript
浅析js中的浮点型运算问题
2014/01/06 Javascript
jquery实现的随机多彩tag标签随机颜色和字号大小效果
2014/03/27 Javascript
浅谈JavaScript function函数种类
2014/12/29 Javascript
AngularJs实现ng1.3+表单验证
2015/12/10 Javascript
js仿QQ邮箱收件人选择与搜索功能
2017/02/10 Javascript
js判断用户是输入的地址请求的路径(实例讲解)
2017/07/18 Javascript
vue 添加vux的代码讲解
2017/11/30 Javascript
Vue CLI 3搭建vue+vuex最全分析(推荐)
2018/09/27 Javascript
单页面vue引入百度统计的使用方法示例详解
2018/10/13 Javascript
node实现生成带参数的小程序二维码并保存到本地功能示例
2018/12/05 Javascript
JQuery Ajax执行跨域请求数据的解决方案
2018/12/10 jQuery
Vue加载json文件的方法简单示例
2019/01/28 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
2019/09/26 Javascript
基于Vue中使用节流Lodash throttle详解
2019/10/30 Javascript
python的绘图工具matplotlib使用实例
2014/07/03 Python
一个基于flask的web应用诞生 组织结构调整(7)
2017/04/11 Python
Python字符串处理实现单词反转
2017/06/14 Python
python日期时间转为字符串或者格式化输出的实例
2018/05/29 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
2020/03/10 Python
Python调用OpenCV实现图像平滑代码实例
2020/06/19 Python
澳大利亚在线生活方式商店:Mytopia
2018/07/08 全球购物
构造方法和其他方法的区别?怎么调用父类的构造方法
2013/09/22 面试题
服务生自我鉴定
2014/01/22 职场文书
幼儿园教师节活动方案
2014/02/02 职场文书
超市中秋节活动方案
2014/02/12 职场文书
简单的大学生自我鉴定
2014/02/18 职场文书
信电学院毕业生自荐书
2014/05/24 职场文书
公司副总经理岗位职责
2014/10/01 职场文书
教师个人培训总结
2015/02/11 职场文书
独生子女证明范本
2015/06/19 职场文书
2019年年中职场激励人心语录30条
2019/08/07 职场文书
Spring Boot 整合 Apache Dubbo的示例代码
2021/07/04 Java/Android
深入理解CSS 中 transform matrix矩阵变换问题
2021/08/30 HTML / CSS