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


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脚本的10个技巧(4)
Oct 09 PHP
PHP静态类
Nov 25 PHP
LotusPhp笔记之:Logger组件的使用方法
May 06 PHP
php中最简单的字符串匹配算法
Dec 16 PHP
php数组比较实现查找连续数的方法
Jul 29 PHP
PHP session 会话处理函数
Jun 06 PHP
PHP通过加锁实现并发情况下抢码功能
Aug 10 PHP
php获取指定数量随机字符串的方法
Feb 06 PHP
php使用curl实现ftp文件下载功能
May 16 PHP
PHP实现的字符串匹配算法示例【sunday算法】
Dec 19 PHP
PHP正则判断一个变量是否为正整数的方法
Feb 27 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
一个目录遍历函数
2006/10/09 PHP
PHP中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
PHP获取当前完整URL地址的函数
2014/12/21 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
2015/03/07 PHP
PHP中ajax无刷新上传图片与图片下载功能
2017/02/21 PHP
PHP分页显示的方法分析【附PHP通用分页类】
2018/05/10 PHP
Yii2语言国际化自动配置详解
2018/08/22 PHP
laravel框架与其他框架的详细对比
2019/10/23 PHP
js类 from qq
2006/11/13 Javascript
js trim函数 去空格函数与正则集锦
2009/11/20 Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
js网页实时倒计时精确到秒级
2014/02/10 Javascript
javascript实现数独解法
2015/03/14 Javascript
常用Javascript函数与原型功能收藏(必看篇)
2016/10/09 Javascript
微信小程序 解析网页内容详解及实例
2017/02/22 Javascript
Vue-resource实现ajax请求和跨域请求示例
2017/02/23 Javascript
web前端开发中常见的多列布局解决方案整理(一定要看)
2017/10/15 Javascript
Angular2管道Pipe及自定义管道格式数据用法实例分析
2017/11/29 Javascript
js 提取某()特殊字符串长度的实例
2017/12/06 Javascript
js原生方法被覆盖,从新赋值原生的方法
2018/01/02 Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
2019/11/20 Javascript
python的else子句使用指南
2016/02/27 Python
使用python编写udp协议的ping程序方法
2018/04/22 Python
Windows下python3.7安装教程
2018/07/31 Python
对python PLT中的image和skimage处理图片方法详解
2019/01/10 Python
WxPython建立批量录入框窗口
2019/02/27 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
2019/04/01 Python
python实现的爬取电影下载链接功能示例
2019/08/26 Python
python使用gdal对shp读取,新建和更新的实例
2020/03/10 Python
Python定时任务APScheduler安装及使用解析
2020/08/07 Python
纯CSS3实现鼠标滑过按钮动画第二节
2020/07/16 HTML / CSS
四年的大学生生活自我评价
2013/12/09 职场文书
煤矿机修工岗位职责
2014/02/07 职场文书
会计电算化毕业生自荐信
2014/03/03 职场文书
工作保证书范文
2014/04/29 职场文书
MySQL 使用自定义变量进行查询优化
2021/05/14 MySQL