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


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水印技术
Feb 14 PHP
PHP 向右侧拉菜单实现代码,测试使用中
Nov 03 PHP
elgg 获取文件图标地址的方法
Mar 20 PHP
解析PHP将对象转换成数组的方法(兼容多维数组类型)
Jun 21 PHP
PHP中配置IIS7实现基本身份验证的方法
Sep 24 PHP
php提高网站效率的技巧
Sep 29 PHP
PHP简单实现无限级分类的方法
May 13 PHP
PHP中header函数的用法及其注意事项详解
Jun 13 PHP
PHP foreach遍历多维数组实现方式
Nov 16 PHP
PHP ADODB实现分页功能简单示例
May 25 PHP
phpstorm 配置xdebug的示例代码
Mar 31 PHP
TP5框架实现的数据库备份功能示例
Apr 05 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截取指定2个字符之间字符串的方法
2015/04/15 PHP
CodeIgniter控制器之业务逻辑实例分析
2016/01/20 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
2017/03/04 PHP
Laravel5.5 动态切换多语言的操作方式
2019/10/25 PHP
漂亮的仿flash菜单,来自蓝色经典
2006/06/26 Javascript
javascript 继承实现方法
2009/08/26 Javascript
ymPrompt的doHandler方法来实现获取子窗口返回值的方法
2010/06/25 Javascript
js 操作符汇总
2014/11/08 Javascript
60个很实用的jQuery代码开发技巧收集
2014/12/15 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
jQuery实现手机版页面翻页效果的简单实例
2016/10/05 Javascript
Bootstrap table表格简单操作
2017/02/07 Javascript
vuejs指令详解
2017/02/07 Javascript
JavaScript表单验证完美代码
2017/03/02 Javascript
vue 2.0路由之路由嵌套示例详解
2017/05/08 Javascript
NodeJS链接MySql数据库的操作方法
2017/06/27 NodeJs
javaScript之split与join的区别(详解)
2017/11/08 Javascript
JavaScript循环遍历你会用哪些之小结篇
2018/09/28 Javascript
JavaScript面试技巧之数组的一些不low操作
2019/03/22 Javascript
解决layer弹出层的内容页点击按钮跳转到新的页面问题
2019/09/14 Javascript
layer弹出层自适应高度,垂直水平居中的实现
2019/09/16 Javascript
JS简单表单验证功能完整示例
2020/01/26 Javascript
详解vue中使用transition和animation的实例代码
2020/12/12 Vue.js
小程序实现列表倒计时功能
2021/01/29 Javascript
python实现获取客户机上指定文件并传输到服务器的方法
2015/03/16 Python
Python IDE PyCharm的基本快捷键和配置简介
2015/11/04 Python
美国Max仓库:Max Warehouse
2020/05/31 全球购物
写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔
2015/07/30 面试题
先进事迹报告会主持词
2014/04/02 职场文书
三年级学生评语
2014/04/23 职场文书
元旦趣味活动方案
2014/08/22 职场文书
2014年大学教师工作总结
2014/12/02 职场文书
2015年幼儿园德育工作总结
2015/05/25 职场文书
关于环保的宣传稿
2015/07/23 职场文书
电力企业职工培训心得体会
2016/01/11 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书