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 相关文章推荐
PHP4 与 MySQL 数据库操作函数详解
Oct 09 PHP
让PHP更快的提供文件下载的代码
Jun 13 PHP
2014年10个最佳的PHP图像操作库
Jul 14 PHP
彻底删除thinkphp3.1案例blog标签的方法
Dec 05 PHP
PHP将HTML转换成文本的实现代码
Jan 21 PHP
PHP session文件独占锁引起阻塞问题解决方法
May 12 PHP
php preg_match的匹配不同国家语言实例
Dec 29 PHP
php生成条形码的图片的实例详解
Sep 13 PHP
彻底搞懂PHP 变量结构体
Oct 11 PHP
php单元测试phpunit入门实例教程
Nov 17 PHP
PHP设计模式之模板模式定义与用法详解
Dec 20 PHP
PHP中抽象类,接口功能、定义方法示例
Feb 26 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
php利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
2014/08/19 PHP
Linux系统下php获得系统分区信息的方法
2015/03/30 PHP
前端必学之PHP语法基础
2016/01/01 PHP
jQuery Ajax之$.get()方法和$.post()方法
2009/10/12 Javascript
jquery实现图片滚动效果的简单实例
2013/11/23 Javascript
jQuery使用andSelf()来包含之前的选择集
2014/05/19 Javascript
javascript判断是手机还是电脑访问网页的简单实例分享
2014/06/03 Javascript
jQuery焦点图切换特效代码分享
2015/09/15 Javascript
JavaScript实现的MD5算法完整实例
2016/02/02 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
JavaScript与ActionScript3两者的同性与差异性
2016/09/22 Javascript
JS 实现 ajax 异步浏览器兼容问题
2017/01/21 Javascript
ionic实现下拉刷新载入数据功能
2017/05/11 Javascript
深入理解vue-class-component源码阅读
2019/02/18 Javascript
python动态监控日志内容的示例
2014/02/16 Python
Django中使用locals()函数的技巧
2015/07/16 Python
python使用threading获取线程函数返回值的实现方法
2017/11/15 Python
深入理解Python3 内置函数大全
2017/11/23 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
2017/12/28 Python
Python简单实现的代理服务器端口映射功能示例
2018/04/08 Python
python中for用来遍历range函数的方法
2018/06/08 Python
程序员写Python时的5个坏习惯,你有几条?
2018/11/26 Python
Django celery异步任务实现代码示例
2020/11/26 Python
python 将Excel转Word的示例
2021/03/02 Python
阳光体育:Sunny Sports(购买露营和远足设备)
2018/08/07 全球购物
工厂保洁员岗位职责
2013/12/04 职场文书
给医务人员表扬信
2014/01/12 职场文书
设备售后服务承诺书
2014/05/30 职场文书
求职教师自荐书
2014/06/19 职场文书
小学教师读书活动总结
2014/07/08 职场文书
爱护公物演讲稿
2014/09/09 职场文书
工伤私了协议书范本
2014/11/24 职场文书
医生个人年度总结
2015/02/28 职场文书
教育教学读书笔记
2015/07/02 职场文书
三八红旗手先进事迹材料(2016推荐版)
2016/02/25 职场文书