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


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 相关文章推荐
3种平台下安装php4经验点滴
Oct 09 PHP
使PHP自定义函数返回多个值
Nov 26 PHP
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
Aug 08 PHP
深入file_get_contents与curl函数的详解
Jun 25 PHP
php获取目录所有文件并将结果保存到数组(实例)
Oct 25 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
Mar 18 PHP
PHP list() 将数组中的值赋给变量的简单实例
Jun 13 PHP
PHP使用imagick扩展实现合并图像的方法
Apr 25 PHP
php二维数组按某个键值排序的实例讲解
Feb 15 PHP
PHP进阶学习之命名空间基本用法分析
Jun 18 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
Apr 06 PHP
win10下 php安装seaslog扩展的详细步骤
Dec 04 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
评分9.0以上的动画电影,剧情除了经典还很燃
2020/03/04 日漫
PHP SplObjectStorage使用实例
2015/05/12 PHP
Zend Framework入门教程之Zend_Session会话操作详解
2016/12/08 PHP
php unlink()函数使用教程
2018/07/12 PHP
分享别人写的一个小型js框架
2007/08/13 Javascript
JavaScript 常见对象类创建代码与优缺点分析
2009/12/07 Javascript
Jquery全选与反选点击执行一次的解决方案
2015/08/14 Javascript
javascript实现C语言经典程序题
2015/11/29 Javascript
angularjs通过过滤器返回超链接的方法
2018/10/26 Javascript
微信小程序用canvas画图并分享
2020/03/09 Javascript
Vue的data、computed、watch源码浅谈
2020/04/04 Javascript
Vue结合路由配置递归实现菜单栏功能
2020/06/16 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
[02:57]DOTA2亚洲邀请赛小组赛第四日 赛事回顾
2015/02/02 DOTA
[33:28]完美世界DOTA2联赛PWL S3 PXG vs GXR 第三场 12.19
2020/12/24 DOTA
Python中使用Flask、MongoDB搭建简易图片服务器
2015/02/04 Python
详解Python中的join()函数的用法
2015/04/07 Python
常见的在Python中实现单例模式的三种方法
2015/04/08 Python
python实现在每个独立进程中运行一个函数的方法
2015/04/23 Python
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
2016/04/13 Python
Python中使用bidict模块双向字典结构的奇技淫巧
2016/07/12 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
2018/02/13 Python
使用Python爬取弹出窗口信息的实例
2020/03/14 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
2020/03/30 Python
python打开文件的方式有哪些
2020/06/29 Python
python 高阶函数简单介绍
2021/02/19 Python
pytorch __init__、forward与__call__的用法小结
2021/02/27 Python
挪威太阳镜和眼镜网上商城:SmartBuyGlasses挪威
2016/08/20 全球购物
小学少先队活动方案
2014/02/18 职场文书
挂科检讨书范文
2014/02/20 职场文书
篝火晚会策划方案
2014/05/16 职场文书
百年校庆宣传标语口号
2015/12/26 职场文书
如何才能写好调研报告?
2019/07/03 职场文书
导游词创作书写原则以及开场白技巧怎么学?
2019/09/25 职场文书
Mysql中一千万条数据怎么快速查询
2021/12/06 MySQL
详解如何使用Nginx解决跨域问题
2022/05/06 Servers