欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

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

程序员文章站 2022-06-09 11:44:12
...
本文章介绍了一段关于不用递归实现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, $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 '
';
Print_r($c);
echo '
'; /* 结果如下: 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] => 儿子 ) ) */


本文地址:

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