php实现无限级分类


Posted in PHP onDecember 24, 2014
$area = array(

array('id'=>1,'name'=>'安徽','parent'=>0),

array('id'=>2,'name'=>'海淀','parent'=>7),

array('id'=>3,'name'=>'濉溪县','parent'=>5),

array('id'=>4,'name'=>'昌平','parent'=>7),

array('id'=>5,'name'=>'淮北','parent'=>1),

array('id'=>6,'name'=>'朝阳','parent'=>7),

array('id'=>7,'name'=>'北京','parent'=>0),

array('id'=>8,'name'=>'上地','parent'=>2)

);

1.递归,查找子孙树

function subtree($arr,$id=0,$lev=1) {

    $subs = array(); // 子孙数组

    foreach($arr as $v) {

        if($v['parent'] == $id) {

            $v['lev'] = $lev;

            $subs[] = $v; // 举例说找到array('id'=>1,'name'=>'安徽','parent'=>0),

            $subs = array_merge($subs,subtree($arr,$v['id'],$lev+1));

        }

    }

    return $subs;

}

$tree = subtree($area,0,1);

foreach($tree as $v) {

    echo str_repeat('  ',$v['lev']),$v['name'],'<br />';

}

2.递归,求家谱树

家谱树的应用 ,如面包屑导航 首页 > 手机类型 > CDMA手机 > 公益PHP > 递归应用

function familytree($arr,$id) {

    $tree = array();

    foreach($arr as $v) {

        if($v['id'] == $id) {// 判断要不要找父栏目

            if($v['parent'] > 0) { // parnet>0,说明有父栏目

                $tree = array_merge($tree,familytree($arr,$v['parent']));

            }

            $tree[] = $v; // 以找到上地为例

        }

    }

    return $tree;

}

print_r(familytree($area,8)); // 北京->海淀->上地

2.迭代,求家谱树

// 迭代,效率比递归高,代码也没多.

// 找家谱树推荐用迭代

function tree($arr,$id) {

    $tree = array();

    while($id !== 0) {

        foreach($arr as $v) {

            if($v['id'] == $id) {

                $tree[] = $v;

                $id = $v['parent'];

                break;

            }    

        }

    }

    return $tree;

}

print_r(tree($area,8));
PHP 相关文章推荐
PHP下操作Linux消息队列完成进程间通信的方法
Jul 24 PHP
php文件怎么打开 如何执行php文件
Dec 21 PHP
探讨如何使用SimpleXML函数来加载和解析XML文档
Jun 07 PHP
关于svn冲突的解决方法
Jun 21 PHP
PHP父类调用子类方法的代码例子
Apr 09 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
Aug 08 PHP
php验证邮箱和ip地址最简单方法汇总
Oct 30 PHP
mysql查找删除重复数据并只保留一条实例详解
Sep 24 PHP
PHP的Json中文处理解决方案
Sep 29 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
Oct 23 PHP
PHP对称加密算法(DES/AES)类的实现代码
Nov 14 PHP
详解Go与PHP的语法对比
May 29 PHP
PHP_SELF,SCRIPT_NAME,REQUEST_URI区别
Dec 24 #PHP
PHP扩展模块memcached长连接使用方法分析
Dec 24 #PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
Dec 24 #PHP
php使用pdo连接并查询sql数据库的方法
Dec 24 #PHP
php将access数据库转换到mysql数据库的方法
Dec 24 #PHP
php启用sphinx全文搜索的实现方法
Dec 24 #PHP
php中mail函数发送邮件失败的解决方法
Dec 24 #PHP
You might like
4.与数据库的连接
2006/10/09 PHP
PHP 和 MySQL 基础教程(三)
2006/10/09 PHP
php中HTTP_REFERER函数用法实例
2014/11/21 PHP
使用PHPCMS搭建wap手机网站
2015/09/20 PHP
Yii框架数据库查询、增加、删除操作示例
2019/10/14 PHP
基于jquery的loading效果实现代码
2010/11/05 Javascript
jquery实现盒子下拉效果示例代码
2013/09/12 Javascript
javascript静态页面传值的三种方法分享
2013/11/12 Javascript
jquery、js操作checkbox全选反选
2014/03/12 Javascript
基于JavaScript FileReader上传图片显示本地链接
2016/05/27 Javascript
基于JQuery实现分隔条的功能
2016/06/17 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
2016/12/21 Javascript
Django1.7+JQuery+Ajax验证用户注册集成小例子
2017/04/08 jQuery
解决jQuery ajax动态新增节点无法触发点击事件的问题
2017/05/24 jQuery
NodeJs form-data格式传输文件的方法
2017/12/13 NodeJs
Angular2学习笔记之数据绑定的示例代码
2018/01/03 Javascript
了解前端理论:rscss和rsjs
2019/05/23 Javascript
javascript实现简易数码时钟
2020/03/30 Javascript
python 中的divmod数字处理函数浅析
2017/10/17 Python
将python代码和注释分离的方法
2018/04/21 Python
在CMD命令行中运行python脚本的方法
2018/05/12 Python
python_opencv用线段画封闭矩形的实例
2018/12/05 Python
Python telnet登陆功能实现代码
2020/04/16 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
2020/09/01 Python
Python计算矩阵的和积的实例详解
2020/09/10 Python
Python对excel的基本操作方法
2021/02/18 Python
两种CSS3伪类选择器详细介绍
2013/12/24 HTML / CSS
为女性购买传统的印度服装和婚纱:Kalkifashion
2019/07/22 全球购物
普师专业个人自荐信范文
2013/11/26 职场文书
仓库文员岗位职责
2014/04/06 职场文书
《青山处处埋忠骨》教学反思
2014/04/22 职场文书
公司催款律师函
2015/05/27 职场文书
MySQL系列之六 用户与授权
2021/07/02 MySQL
CSS 鼠标选中文字后改变背景色的实现代码
2023/05/21 HTML / CSS