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 什么是PEAR?
Mar 19 PHP
PHP 内存缓存加速功能memcached安装与用法
Sep 03 PHP
php cli 方式 在crotab中运行解决
Feb 08 PHP
php和js如何通过json互相传递数据相关问题探讨
Feb 26 PHP
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
Jul 01 PHP
UTF-8正则表达式如何匹配汉字
Aug 03 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
May 19 PHP
form自动提交实例讲解
Jul 10 PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
Nov 06 PHP
在Laravel中使用DataTables插件的方法
May 29 PHP
PHP的JSON封装、转变及输出操作示例
Sep 27 PHP
PHP解决高并发问题
Apr 01 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 ci框架中加载css和js文件失败的原因及解决方法
2014/07/29 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
JavaScript 特殊字符
2007/04/05 Javascript
window.addEventListener来解决让一个js事件执行多个函数
2012/12/26 Javascript
返回页面顶部top按钮通过锚点实现(自写)
2013/08/30 Javascript
JavaScript学习笔记之JS对象
2015/01/22 Javascript
移动端点击图片放大特效PhotoSwipe.js插件实现
2016/08/25 Javascript
jQuery实现手机版页面翻页效果的简单实例
2016/10/05 Javascript
AngularJS 防止页面闪烁的方法
2017/03/09 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
Angular2使用vscode断点调试ts文件的方法
2017/12/13 Javascript
node.js文件上传重命名以及移动位置的示例代码
2018/01/19 Javascript
详解Vue中数组和对象更改后视图不刷新的问题
2018/09/21 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
2019/04/19 Javascript
Python实现的多线程端口扫描工具分享
2015/01/21 Python
python3 实现的人人影视网站自动签到
2016/06/19 Python
利用Python实现网络测试的脚本分享
2017/05/26 Python
Python 查看文件的读写权限方法
2018/01/23 Python
Python实现的从右到左字符串替换方法示例
2018/07/06 Python
python用插值法绘制平滑曲线
2021/02/19 Python
python SocketServer源码深入解读
2019/09/17 Python
Python上下文管理器全实例详解
2019/11/12 Python
django formset实现数据表的批量操作的示例代码
2019/12/06 Python
浅析python 定时拆分备份 nginx 日志的方法
2020/04/27 Python
python与js主要区别点总结
2020/09/13 Python
时尚的CSS3进度条效果
2012/02/22 HTML / CSS
eDreams巴西:廉价机票,酒店优惠和度假套餐
2017/04/14 全球购物
Myprotein台湾官方网站:全球领先的运动营养品牌
2018/12/10 全球购物
团工委书记自荐书范文
2013/12/17 职场文书
2014年“向国旗敬礼”网上签名寄语活动方案
2014/09/27 职场文书
党的群众路线教育实践活动个人整改措施
2014/10/27 职场文书
2014年体育工作总结
2014/11/24 职场文书
外国人来华邀请函
2015/01/31 职场文书
看雷锋电影观后感
2015/06/10 职场文书
《家庭教育》读后感3篇
2019/12/18 职场文书
详解Python中的进程和线程
2021/06/23 Python