php两种无限分类方法实例


Posted in PHP onApril 21, 2015

一、递归方法

$items = array(

array('id'=>1,'pid'=>0,'name'=>'一级11'),

array('id'=>2,'pid'=>0,'name'=>'一级12'),

array('id'=>3,'pid'=>1,'name'=>'二级21'),

array('id'=>4,'pid'=>3,'name'=>'三级31'),

array('id'=>5,'pid'=>1,'name'=>'二级22'),

array('id'=>6,'pid'=>3,'name'=>'三级32'),

array('id'=>7,'pid'=>6,'name'=>'四级41'),

);

$i = 0;

function formatTree($arr, $pid = 0){

$tree = array();

$temp = array();

global $i;

if($arr){

foreach($arr as $k=>$v){

if($v['pid'] == $pid){//

$temp = formatTree($arr, $v['id']);

$temp && $v['son'] = $temp;

$tree[] = $v;

}

}

}

return $tree;

}

print_r(formatTree($items));

二、非递归方法
function genTree($items) {

    $tree = array(); //格式化好的树

    foreach ($items as $item)

        if (isset($items[$item['pid']])){

            $items[$item['pid']]['son'][] = &$items[$item['id']];

        }

        else{

            $tree[] = &$items[$item['id']];

        }

    return $tree;

}
$items = array(

    1 => array('id' => 1, 'pid' => 0, 'name' => '一级11'),

    2 => array('id' => 2, 'pid' => 1, 'name' => '二级21'),

    3 => array('id' => 3, 'pid' => 1, 'name' => '二级23'),

    4 => array('id' => 4, 'pid' => 9, 'name' => '三级31'),

    5 => array('id' => 5, 'pid' => 4, 'name' => '四级43'),

    6 => array('id' => 6, 'pid' => 9, 'name' => '三级32'),

    7 => array('id' => 7, 'pid' => 4, 'name' => '四级41'),

    8 => array('id' => 8, 'pid' => 4, 'name' => '四级42'),

    9 => array('id' => 9, 'pid' => 1, 'name' => '二级25'),

    10 => array('id' => 10, 'pid' => 11, 'name' => '二级22'),

    11 => array('id' => 11, 'pid' => 0, 'name' => '一级12'),

    12 => array('id' => 12, 'pid' => 11, 'name' => '二级24'),

    13 => array('id' => 13, 'pid' => 4, 'name' => '四级44'),

    14 => array('id' => 14, 'pid' => 1, 'name' => '二级26'),

    15 => array('id' => 15, 'pid' => 8, 'name' => '五级51'),

    16 => array('id' => 16, 'pid' => 8, 'name' => '五级52'),

    17 => array('id' => 17, 'pid' => 8, 'name' => '五级53'),

    18 => array('id' => 18, 'pid' => 16, 'name' => '六级64'),

);

print_r(genTree($items));
PHP 相关文章推荐
2.PHP入门
Oct 09 PHP
php 智能404跳转代码,适合换域名没改变目录的网站
Jun 04 PHP
PHP写的求多项式导数的函数代码
Jul 04 PHP
三个类概括PHP的五种设计模式
Sep 05 PHP
PHP设置一边执行一边输出结果的代码
Sep 30 PHP
PHP使用ob_start生成html页面的方法
Nov 07 PHP
php判断一个数组是否为有序的方法
Mar 27 PHP
PHP判断是否连接上网络的方法
Jul 01 PHP
浅析PHP7新功能及语法变化总结
Jun 17 PHP
php+js实现裁剪任意形状图片
Oct 31 PHP
Laravel中validation验证 返回中文提示 全局设置的方法
Sep 29 PHP
PHP ob缓存以及ob函数原理实例解析
Nov 13 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
Apr 21 #PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
Apr 21 #PHP
wordpress安装过程中遇到中文乱码的处理方法
Apr 21 #PHP
PHP使用递归生成文章树
Apr 21 #PHP
php实现的美国50个州选择列表实例
Apr 20 #PHP
PHP也能干大事之PHP中的编码解码详解
Apr 20 #PHP
php中使用base HTTP验证的方法
Apr 20 #PHP
You might like
PHP - Html Transfer Code
2006/10/09 PHP
PHP 截取字符串专题集合
2010/08/19 PHP
php中计算中文字符串长度、截取中文字符串的函数代码
2011/08/09 PHP
Nigma vs Alliance BO5 第四场2.14
2021/03/10 DOTA
Javascript 类与静态类的实现
2010/04/01 Javascript
再次分享18个非常棒的jQuery表格插件
2011/04/10 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
javascript去除字符串左右两端的空格
2015/02/05 Javascript
jQuery插件制作之全局函数用法实例
2015/06/01 Javascript
JS实现选中当前菜单后高亮显示的导航条效果
2015/10/15 Javascript
javascript日期格式化方法小结
2015/12/17 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
2016/06/30 Javascript
前端图片懒加载(lazyload)的实现方法(提高用户体验)
2017/08/21 Javascript
js实现canvas图片与img图片的相互转换的示例
2017/08/31 Javascript
JS实现静态页面搜索并高亮显示功能完整示例
2017/09/19 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
2018/03/13 Javascript
bootstrapTable+ajax加载数据 refresh更新数据
2018/08/31 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
2020/05/12 Javascript
React实现类似淘宝tab居中切换效果的示例代码
2020/06/02 Javascript
Python计算三维矢量幅度的方法
2015/06/15 Python
Python设计实现的计算器功能完整实例
2017/08/18 Python
基于Python安装pyecharts所遇的问题及解决方法
2019/08/12 Python
Python如何批量生成和调用变量
2020/11/21 Python
如何用Python提取10000份log中的产品信息
2021/01/14 Python
前端使用canvas生成盲水印的加密解密的实现
2020/12/16 HTML / CSS
别名指示符是什么
2012/10/08 面试题
思想政治自我鉴定
2013/10/06 职场文书
质检部岗位职责
2013/11/11 职场文书
大学生入党思想汇报
2014/01/14 职场文书
致长跑运动员加油稿
2014/02/20 职场文书
民主生活会批评与自我批评总结
2014/10/17 职场文书
2015年物流客服工作总结
2015/07/27 职场文书
结婚喜宴祝酒词
2015/08/10 职场文书
关爱空巢老人感想
2015/08/11 职场文书
2016年“抗战胜利纪念日”71周年校园广播稿
2015/12/18 职场文书
详解Django的MVT设计模式
2021/04/29 Python