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


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
php下使用SMTP发邮件的代码
Jan 10 PHP
PHP 递归效率分析
Nov 24 PHP
PHP+ajax 无刷新删除数据
Feb 20 PHP
PHP读取ACCESS数据到MYSQL的代码
May 11 PHP
php 抽象类的简单应用
Sep 06 PHP
Zend Framework中的简单工厂模式 图文
Jul 10 PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
Jun 12 PHP
PHP实现的memcache环形队列类实例
Jul 28 PHP
php 使用redis锁限制并发访问类示例
Nov 02 PHP
老生常谈文本文件和二进制文件的区别
Feb 27 PHP
php关联数组与索引数组及其显示方法
Mar 12 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取整函数:ceil,floor,round,intval的区别详细解析
2013/08/31 PHP
学习php设计模式 php实现备忘录模式(Memento)
2015/12/09 PHP
PHP全局变量与超级全局变量区别分析
2016/04/01 PHP
比较完整的微信开发php代码
2016/08/02 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
Laravel实现通过blade模板引擎渲染视图
2019/10/25 PHP
jquery滚动加载数据的方法
2015/03/09 Javascript
Bootstrap 粘页脚效果
2016/03/28 Javascript
jQuery Ajax使用FormData对象上传文件的方法
2016/09/07 Javascript
JS出现失效的情况总结
2017/01/20 Javascript
使用JavaScript实现alert的实例代码
2017/07/06 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
2017/12/28 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
JS实现吸顶特效
2020/01/08 Javascript
js找出5个数中最大的一个数和倒数第二大的数实现方法示例小结
2020/03/04 Javascript
json_decode 索引为数字时自动排序问题解决方法
2020/03/28 Javascript
angular中的post请求处理示例详解
2020/06/30 Javascript
Python使用正则表达式抓取网页图片的方法示例
2017/04/21 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
2017/08/30 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
2020/01/03 Python
Restful_framework视图组件代码实例解析
2020/11/17 Python
AmazeUI 网格的实现示例
2020/08/13 HTML / CSS
adidas旗下高尔夫装备供应商:TaylorMade Golf(泰勒梅高尔夫)
2016/08/28 全球购物
美国肌肉和力量商店:Muscle & Strength
2019/06/22 全球购物
几道PHP面试题
2013/04/14 面试题
实习期自我鉴定
2013/10/11 职场文书
九年级体育教学反思
2014/01/23 职场文书
大班亲子运动会方案
2014/06/10 职场文书
献爱心标语
2014/06/21 职场文书
九九重阳节标语
2014/10/07 职场文书
单位接收函格式
2015/01/30 职场文书
简爱电影观后感
2015/06/10 职场文书
红色经典观后感
2015/06/18 职场文书
初中生物教学反思
2016/02/20 职场文书
python 统计代码耗时的几种方法分享
2021/04/02 Python
yyds什么意思?90后已经听不懂00后讲话了……
2022/02/03 杂记