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

 更新时间:2014年04月18日 12:57:36   作者:  
这篇文章主要介绍了PHP不用递归实现无限分级的例子,实际上是一种思路,并用简单的例子来说明,需要的朋友可以参考下

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

复制代码 代码如下:

/**
 * 创建父节点树形数组
 * 参数
 * $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网页版聊天软件实现代码

    php网页版聊天软件实现代码

    这篇文章主要介绍了php网页版聊天软件实现代码,可以实现匿名聊天,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • php根据身份证号码计算年龄的实例代码

    php根据身份证号码计算年龄的实例代码

    我们只要知道身份证的生成规则就可以了,像下面我们从指定位置到多少位就是出日期了,然后我们把日期转成时间戳然后进行加减运算就得出了年龄了,下面我们看实例
    2014-01-01
  • PhpStorm2020.1 安装 debug - Postman 调用的详细教程

    PhpStorm2020.1 安装 debug - Postman 调用的详细教程

    这篇文章主要介绍了PhpStorm2020.1 安装 debug - Postman 调用的详细教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 实例讲解YII2中多表关联的使用方法

    实例讲解YII2中多表关联的使用方法

    最近工作中遇到了YII2多表关联的相关问题,发现网上这方面的资料并不多,所以想着自己整理下吧,方便自己在以后需要的时候或者有需要的朋友们参考学习,下面这篇文章主要给大家介绍了关于YII2中多表关联的使用方法,需要的朋友下面来一起看看吧。
    2017-07-07
  • Smarty模板引擎缓存机制详解

    Smarty模板引擎缓存机制详解

    这篇文章主要介绍了Smarty模板引擎缓存机制,结合实例形式分析了Smarty模板引擎缓存机制的原理,开启与使用方法以及相关注意事项,需要的朋友可以参考下
    2016-05-05
  • Smarty最简单实现列表奇偶变色的方法

    Smarty最简单实现列表奇偶变色的方法

    这篇文章主要介绍了Smarty最简单实现列表奇偶变色的方法,实例分析了Smarty属性与方法的相关使用技巧,需要的朋友可以参考下
    2015-07-07
  • Yii框架实现的验证码、登录及退出功能示例

    Yii框架实现的验证码、登录及退出功能示例

    这篇文章主要介绍了Yii框架实现的验证码、登录及退出功能,结合具体实例形式分析了基于Yii框架实现的用户验证登录及退出操作相关步骤与操作技巧,需要的朋友可以参考下
    2017-05-05
  • PHP rsa加密解密使用方法

    PHP rsa加密解密使用方法

    这篇文章主要介绍了PHP rsa加密解密使用方法,本文讲解了生成公钥、私钥及PHP中使用生成的公钥、私钥进行加密解密实例,需要的朋友可以参考下
    2015-04-04
  • Yii基于CActiveForm的Ajax数据验证用法示例

    Yii基于CActiveForm的Ajax数据验证用法示例

    这篇文章主要介绍了Yii基于CActiveForm的Ajax数据验证用法,结合实例形式分析了Yii视图自定义Form表单的ajax提交及控制器处理实现方法,需要的朋友可以参考下
    2016-07-07
  • thinkphp5修改view到根目录实例方法

    thinkphp5修改view到根目录实例方法

    在本篇文章里小编给大家分享了关于thinkphp5修改view到根目录实例方法以及相关代码,需要的朋友们学习下。
    2019-07-07

最新评论