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


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 相关文章推荐
不用iconv库的gb2312与utf-8的互换函数
Oct 09 PHP
cache_lite试用
Feb 14 PHP
php数组函数序列之array_pop() - 删除数组中的最后一个元素
Nov 07 PHP
php去除换行(回车换行)的三种方法
Mar 26 PHP
PHP+FastCGI+Nginx配置PHP运行环境
Aug 07 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
Sep 29 PHP
PHP中使用SimpleXML检查XML文件结构实例
Jan 07 PHP
非常全面的php日期时间运算汇总
Nov 04 PHP
php实现登陆模块功能示例
Oct 20 PHP
thinkPHP框架整合tcpdf插件操作示例
Aug 07 PHP
PHP钩子实现方法解析
May 21 PHP
使用PHP开发留言板功能
Nov 19 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邮件专题
2006/10/09 PHP
PHP设计聊天室步步通
2006/10/09 PHP
PHP生成RSS文件类实例
2014/12/05 PHP
php生成rss类用法实例
2015/04/14 PHP
PHP中单例模式与工厂模式详解
2017/02/17 PHP
CI框架实现创建自定义类库的方法
2018/12/25 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
checkbox全选所涉及到的知识点介绍
2013/12/31 Javascript
jQuery Masonry瀑布流插件使用详解
2014/11/17 Javascript
jQuery实现仿新浪微博浮动的消息提示框(可智能定位)
2015/10/10 Javascript
基于jQuery实现的扇形定时器附源码下载
2015/10/20 Javascript
JS折半插入排序算法实例
2015/12/02 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
2016/09/05 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/09/29 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
2016/11/02 Javascript
js实现自定义路由
2017/02/04 Javascript
关于Javascript中document.cookie的使用
2017/03/08 Javascript
Angular中innerHTML标签的样式不起作用的原因解析
2019/06/18 Javascript
php使用递归与迭代实现快速排序示例
2014/01/23 Python
python Flask实现restful api service
2017/12/04 Python
numpy自动生成数组详解
2017/12/15 Python
python dataframe 输出结果整行显示的方法
2018/06/14 Python
Python 从相对路径下import的方法
2018/12/04 Python
Python实现的统计文章单词次数功能示例
2019/07/08 Python
python中wheel的用法整理
2020/06/15 Python
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
美国著名首饰网站:BaubleBar
2016/08/29 全球购物
教师节倡议书
2014/08/30 职场文书
加强作风建设工作总结
2014/10/23 职场文书
人力资源部岗位职责
2015/02/11 职场文书
李白故里导游词
2015/02/12 职场文书
2015年社区党务工作总结
2015/04/21 职场文书
团队拓展训练感想
2015/08/07 职场文书
golang interface判断为空nil的实现代码
2021/04/24 Golang
一次线上mongo慢查询问题排查处理记录
2022/03/18 MongoDB