首页 > php开发 > 不用递归实现php树程序代码

不用递归实现php树程序代码

本文章介绍了一段关于不用递归实现php树程序代码,实例代码如下:

<?php
header('Content-type:text/html;charset=utf-8');
/** 
 * 创建父节点树形数组
 * 参数
 * $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');
echo '<pre>';
Print_r($c);
echo '</pre>';
/*  
结果如下: 
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] => 儿子 
        ) 
 
) 
*/


本文地址:http://www.phprm.com/develop/fs4073.html

转载随意,但请附上文章地址:-)

标签:php递归 php树程序

相关文章

发表留言