PHP不用递归实现无限分级的例子分享


Posted in PHP onApril 18, 2014

两个不用递归的树形数组操作函数

/**
 * 创建父节点树形数组
 * 参数
 * $ar 数组,邻接列表方式组织的数据
 * $id 数组中作为主键的下标或关联键名
 * $pid 数组中作为父键的下标或关联键名
 * 返回 多维数组
 **/
function find_parent($ar, $id='id', $pid='pid') { 
  foreach($ar as $v) $t[$v[$id]] = $v;
  foreach ($t as $k => $item){
    if( $item[$pid] ){
      if( ! isset($t[$item[$pid]]['parent'][$item[$pid]]) )
         $t[$item[$id]]['parent'][$item[$pid]] =& $t[$item[$pid]];
    }
  } 
  return $t;
}

/**
 * 创建子节点树形数组
 * 参数
 * $ar 数组,邻接列表方式组织的数据
 * $id 数组中作为主键的下标或关联键名
 * $pid 数组中作为父键的下标或关联键名
 * 返回 多维数组
 **/
function find_child($ar, $id='id', $pid='pid') {
  foreach($ar as $v) $t[$v[$id]] = $v;
  foreach ($t as $k => $item){
    if( $item[$pid] ) {
      $t[$item[$pid]]['child'][$item[$id]] =& $t[$k];
    }
  }
  return $t;
}

使用例子:

$data = array(
  array('ID'=>1, 'PARENT'=>0, 'NAME'=>'祖父'),
  array('ID'=>2, 'PARENT'=>1, 'NAME'=>'父亲'),
  array('ID'=>3, 'PARENT'=>1, 'NAME'=>'叔伯'),
  array('ID'=>4, 'PARENT'=>2, 'NAME'=>'自己'),
  array('ID'=>5, 'PARENT'=>4, 'NAME'=>'儿子'),
);
$p = find_parent($data, 'ID', 'PARENT');
$c = find_child($data, 'ID', 'PARENT');

执行效果:

Array
(
    [1] => Array
        (
            [ID] => 1
            [PARENT] => 0
            [NAME] => 祖父
            [child] => Array
                (
                    [2] => Array
                        (
                            [ID] => 2
                            [PARENT] => 1
                            [NAME] => 父亲
                            [child] => Array
                                (
                                    [4] => Array
                                        (
                                            [ID] => 4
                                            [PARENT] => 2
                                            [NAME] => 自己
                                            [child] => Array
                                                (
                                                    [5] => Array
                                                        (
                                                            [ID] => 5
                                                            [PARENT] => 4
                                                            [NAME] => 儿子
                                                        )                                                )
                                        )
                                )
                        )
                    [3] => Array
                        (
                            [ID] => 3
                            [PARENT] => 1
                            [NAME] => 叔伯
                        )
                )
        )
    [2] => Array
        (
            [ID] => 2
            [PARENT] => 1
            [NAME] => 父亲
            [child] => Array
                (
                    [4] => Array
                        (
                            [ID] => 4
                            [PARENT] => 2
                            [NAME] => 自己
                            [child] => Array
                                (
                                    [5] => Array
                                        (
                                            [ID] => 5
                                            [PARENT] => 4
                                            [NAME] => 儿子
                                        )
                                )
                        )
                )
        )
    [3] => Array
        (
            [ID] => 3
            [PARENT] => 1
            [NAME] => 叔伯
        )
    [4] => Array
        (
            [ID] => 4
            [PARENT] => 2
            [NAME] => 自己
            [child] => Array
                (
                    [5] => Array
                        (
                            [ID] => 5
                            [PARENT] => 4
                            [NAME] => 儿子
                        )
                )
        )
    [5] => Array
        (
            [ID] => 5
            [PARENT] => 4
            [NAME] => 儿子
        )
)
PHP 相关文章推荐
PHP4实际应用经验篇(9)
Oct 09 PHP
QQ登录 PHP OAuth示例代码
Jul 20 PHP
php页面缓存方法小结
Jan 10 PHP
php中使用gd库实现远程图片下载实例
May 12 PHP
PHP数组与对象之间使用递归实现转换的方法
Jun 24 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
Dec 17 PHP
CI框架文件上传类及图像处理类用法分析
May 18 PHP
PHP微信开发之查询微信精选文章
Jun 23 PHP
Laravel框架实现model层的增删改查(CURD)操作示例
May 12 PHP
Ajax+PHP实现的模拟进度条功能示例
Feb 11 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
Feb 10 PHP
PHP使用Redis队列执行定时任务实例讲解
Mar 24 PHP
利用php下载xls文件(自己动手写的)
Apr 18 #PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
Apr 18 #PHP
从PHP的源码中深入了解stdClass类
Apr 18 #PHP
理解PHP中的stdClass类
Apr 18 #PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
Apr 17 #PHP
php实现的漂亮分页方法
Apr 17 #PHP
codeigniter中测试通过的分页类示例
Apr 17 #PHP
You might like
ADODB结合SMARTY使用~超级强
2006/11/25 PHP
php实现的简单压缩英文字符串的代码
2008/04/24 PHP
thinkphp实现多语言功能(语言包)
2014/03/04 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
鼠标图片振动代码
2006/07/06 Javascript
jquery.validate使用攻略 第二部
2010/07/01 Javascript
jQuery选择器全集详解
2014/11/24 Javascript
JS实现向iframe中表单传值的方法
2017/03/24 Javascript
详解vue 配合vue-resource调用接口获取数据
2017/06/22 Javascript
js实现会跳动的日历效果(完整实例)
2017/10/18 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
2018/04/28 Javascript
JS实现table表格内针对某列内容进行即时搜索筛选功能
2018/05/11 Javascript
利用nodeJs anywhere搭建本地服务器环境的方法
2018/05/12 NodeJs
AngularJS实现动态切换样式的方法分析
2018/06/26 Javascript
详解如何在vue-cli中使用vuex
2018/08/07 Javascript
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
2018/08/20 Javascript
Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
2019/11/20 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
[55:25]VGJ.T vs Optic Supermajor小组赛D组 BO3 第三场 6.3
2018/06/04 DOTA
python plotly画柱状图代码实例
2019/12/13 Python
Python使用Selenium实现淘宝抢单的流程分析
2020/06/23 Python
iframe与window.onload如何使用详解
2020/05/07 HTML / CSS
Kneipp克奈圃美国官网:德国百年精油配方的传承
2018/02/07 全球购物
八皇后问题,输出了所有情况,不过有些结果只是旋转了90度
2016/08/15 面试题
工程师自我评价怎么写
2013/09/19 职场文书
合作协议书
2014/04/23 职场文书
人事任命书怎么写
2014/06/05 职场文书
个人债务授权委托书范本
2014/10/05 职场文书
个人买房协议书范本
2014/10/06 职场文书
银行贷款委托书范本
2014/10/11 职场文书
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书
新员工考核评语
2014/12/31 职场文书
倡议书作文
2015/01/19 职场文书
户外亲子活动总结
2015/05/08 职场文书
Python获取百度热搜的完整代码
2021/04/07 Python
Apache POI的基本使用详解
2021/11/07 Servers