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


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 相关文章推荐
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
Mar 13 PHP
php循环检测目录是否存在并创建(循环创建目录)
Jan 06 PHP
phpmyadmin3 安装配置图解教程
Mar 29 PHP
PHP中3种生成XML文件方法的速度效率比较
Oct 06 PHP
基于PHP的简单采集数据入库程序【续篇】
Jul 30 PHP
PHP常用正则表达式集锦
Aug 17 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
Jan 28 PHP
Windows下编译PHP5.4和xdebug全记录
Apr 03 PHP
weiphp微信公众平台授权设置
Jan 04 PHP
Yii2简单实现多语言配置的方法
Jul 23 PHP
tp5(thinkPHP5)框架连接数据库的方法示例
Dec 24 PHP
thinkphp整合系列之极验滑动验证码geetest功能
Jun 18 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的配置文件php.ini
2006/10/09 PHP
PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)
2016/12/02 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
javascript之典型高阶函数应用介绍
2013/01/10 Javascript
子页向父页传值示例
2013/11/27 Javascript
jquery检测input checked 控件是否被选中的方法
2014/03/26 Javascript
jQuery实现的多选框多级联动插件
2014/05/02 Javascript
js 模式窗口(模式对话框和非模式对话框)的使用介绍
2014/07/17 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
2015/06/12 Javascript
JavaScript脚本判断蜘蛛来源的方法
2015/09/22 Javascript
js电话号码验证方法
2015/09/28 Javascript
探讨JavaScript标签位置的存放与功能有无关系
2016/01/15 Javascript
论Bootstrap3和Foundation5网格系统的异同
2016/05/16 Javascript
javascript 内置对象及常见API详细介绍
2016/11/01 Javascript
javascript使用递归算法求两个数字组合功能示例
2017/01/03 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
2017/02/12 Javascript
微信小程序 sha1 实现密码加密实例详解
2017/07/06 Javascript
原生js实现form表单序列化的方法
2018/08/02 Javascript
layer.open 获取不到表单信息的解决方法
2019/09/26 Javascript
vue使用nprogress实现进度条
2019/12/09 Javascript
JS实现轮播图效果
2020/01/11 Javascript
基于脚手架创建Vue项目实现步骤详解
2020/08/03 Javascript
JavaScript常用8种数组去重代码实例
2020/09/09 Javascript
复制粘贴功能的Python程序
2008/04/04 Python
python对象及面向对象技术详解
2016/07/19 Python
Python实现将HTML转换成doc格式文件的方法示例
2017/11/20 Python
Python带动态参数功能的sqlite工具类
2018/05/26 Python
python下载微信公众号相关文章
2019/02/26 Python
Python 如何创建一个简单的REST接口
2020/07/30 Python
兰蔻英国官网:Lancome英国
2019/04/30 全球购物
嘻哈珠宝品牌:KRKC&CO
2020/10/19 全球购物
亚马逊海外购:亚马逊美国、英国、日本、德国直邮
2021/03/18 全球购物
建筑工程技术应届生求职信
2013/11/17 职场文书
交通事故协议书范本
2014/11/18 职场文书
贷款收入证明范本
2015/06/12 职场文书
城南旧事电影观后感
2015/06/16 职场文书