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 MSSQL 存储过程的方法
Dec 24 PHP
php程序的国际化实现方法(利用gettext)
Aug 14 PHP
七款最流行的PHP本地服务器分享
Feb 19 PHP
精美漂亮的php分页类代码
Apr 02 PHP
浅谈PHP与C#的值类型指向区别的详解
May 21 PHP
PHP多文件上传类实例
Mar 07 PHP
Yii控制器中filter过滤器用法分析
Jul 15 PHP
PHP中用mysqli面向对象打开连接关闭mysql数据库的方法
Nov 05 PHP
PHP缩略图生成和图片水印制作
Jan 07 PHP
php实现将二维关联数组转换成字符串的方法详解
Jul 31 PHP
PHP PDOStatement::rowCount讲解
Feb 01 PHP
PHP利用百度ai实现文本和图片审核
May 08 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错误提示及查错方法
2015/07/14 PHP
Yii CGridView用法实例详解
2016/07/12 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
2018/05/12 PHP
PHP中遍历数组的三种常用方法实例分析
2019/06/24 PHP
php给数组赋值的实例方法
2019/09/26 PHP
Jquery 选中表格一列并对表格排序实现原理
2012/12/15 Javascript
JavaScript中的parse()方法使用简介
2015/06/12 Javascript
基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标
2016/01/22 Javascript
精彩的Bootstrap案例分享 重点在注释!(选项卡、栅格布局)
2016/07/01 Javascript
Ajax异步文件上传与NodeJS express服务端处理
2017/04/01 NodeJs
最常用的jQuery表单验证(简单)
2017/05/23 jQuery
JS+HTML5 FileReader实现文件上传前本地预览功能
2020/03/27 Javascript
bootstrap自定义样式之bootstrap实现侧边导航栏功能
2018/09/10 Javascript
微信小程序实现笑脸评分功能
2018/11/03 Javascript
使用vue2实现带地区编号和名称的省市县三级联动效果
2018/11/05 Javascript
node和vue实现商城用户地址模块
2018/12/05 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
2019/07/18 Javascript
解决vue初始化项目时,一直卡在Project description上的问题
2019/10/31 Javascript
NodeJS开发人员常见五个错误理解
2020/10/14 NodeJs
[05:08]2014DOTA2国际邀请赛 Hao专访复仇的胜利很爽
2014/07/15 DOTA
python django 增删改查操作 数据库Mysql
2017/07/27 Python
详解使用CSS3的@media来编写响应式的页面
2017/11/01 HTML / CSS
高清屏下canvas重置尺寸引发的问题的解决
2019/10/14 HTML / CSS
美国最大的网络男装服装品牌:Bonobos
2017/05/25 全球购物
美国最大婚纱连锁店运营商:David’s Bridal
2019/03/12 全球购物
台湾时尚彩瞳专门店:imeime
2019/08/16 全球购物
企业消防安全制度
2014/02/02 职场文书
售房协议书
2014/08/19 职场文书
绿色环保家庭事迹材料
2014/08/31 职场文书
社区端午节活动总结
2015/02/11 职场文书
2015年工程师工作总结
2015/04/30 职场文书
企业战略合作意向书
2015/05/08 职场文书
亮剑观后感500字
2015/06/05 职场文书
人与自然的观后感
2015/06/18 职场文书
课改心得体会范文
2016/01/25 职场文书
MySQL数据库 任意ip连接方法
2022/05/20 MySQL