PHP树-不需要递归的实现方法

前端之家收集整理的这篇文章主要介绍了PHP树-不需要递归的实现方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

PHP树-不需要递归的实现方法

$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,$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,'NAME'=>'叔伯'),array('ID'=>4,'PARENT'=>2,'NAME'=>'自己'),array('ID'=>5,'PARENT'=>4,'NAME'=>'儿子'),);

$p = find_parent($data,'ID','PARENT');
$c = find_child($data,'PARENT');
Print_r ($c);

执行效果:

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相关文章