> 백엔드 개발 > PHP 튜토리얼 > PHP 비재귀 트리 배열 생성자

PHP 비재귀 트리 배열 생성자

WBOY
풀어 주다: 2016-07-25 08:57:06
원래의
989명이 탐색했습니다.
分享二个不用递归实现的树形数组的构造函数,有需要的朋友,作个参考。

非递归树形数组构造函数,代码:

<?php
/**
*创建父节点树形数组 
* 参数 $ar 数组,邻接列表方式组织的数据 
* $id 数组中作为主键的下标或关联键名 
* $pid 数组中作为父键的下标或关联键名 
* 返回 多维数组
* by bbs.it-home.org
**/
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' );
print_r($c);
exit;
?>
로그인 후 복사


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿