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


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 相关文章推荐
实用函数2
Nov 08 PHP
PHP 常用函数库和一些实用小技巧
Jan 01 PHP
php 文件缓存函数
Oct 08 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
Nov 07 PHP
深入PHP FTP类的详解
Jun 13 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
Nov 19 PHP
codeigniter显示所有脚本执行时间的方法
Mar 21 PHP
php递归调用删除数组空值元素的方法
Apr 28 PHP
Symfony生成二维码的方法
Feb 04 PHP
yii2 页面底部加载css和js的技巧
Apr 21 PHP
对PHP依赖注入的理解实例分析
Oct 09 PHP
php将xml转化对象的实例详解
Nov 17 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开发者常犯的10个MySQL错误更正剖析
2012/01/30 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
PHP向socket服务器收发数据的方法
2015/01/24 PHP
总结PHP中数值计算的注意事项
2016/08/14 PHP
实例说明js脚本语言和php脚本语言的区别
2019/04/04 PHP
php设计模式之策略模式应用案例详解
2019/06/17 PHP
php适配器模式简单应用示例
2019/10/23 PHP
js最简单的拖拽效果实现代码
2010/09/24 Javascript
JS数组去重与取重的示例代码
2014/01/24 Javascript
js对文章内容进行分页示例代码
2014/03/05 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
2014/05/14 Javascript
Javascript学习笔记之相等符号与严格相等符号
2014/11/23 Javascript
JS函数定义方式的区别介绍
2016/03/22 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
2016/12/25 Javascript
探索webpack模块及webpack3新特性
2017/09/18 Javascript
原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面
2017/11/01 Javascript
vue 指定组件缓存实例详解
2018/04/01 Javascript
vue v-model实现自定义样式多选与单选功能
2018/07/05 Javascript
Vue开发之封装上传文件组件与用法示例
2019/04/25 Javascript
vue2.0 实现富文本编辑器功能
2019/05/26 Javascript
JavaScript实现的3D旋转魔方动画效果实例代码
2019/07/31 Javascript
vue各种事件监听实例(小结)
2020/06/24 Javascript
python批量同步web服务器代码核心程序
2014/09/01 Python
在Python中使用Mako模版库的简单教程
2015/04/08 Python
python 函数传参之传值还是传引用的分析
2017/09/07 Python
python实现字符串中字符分类及个数统计
2018/09/28 Python
Python面向对象基础入门之编码细节与注意事项
2018/12/11 Python
解决python线程卡死的问题
2019/02/18 Python
python 寻找离散序列极值点的方法
2019/07/10 Python
详解Python打包分发工具setuptools
2019/08/05 Python
初中生自我鉴定
2014/02/04 职场文书
《闻一多先生的说和做》教学反思
2014/04/28 职场文书
党员群众路线学习心得体会
2014/11/04 职场文书
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
2021/03/31 jQuery
十大最强妖精系宝可梦,哲尔尼亚斯实力最强,第五被称为大力士
2022/03/18 日漫
python实现双向链表原理
2022/05/25 Python