무한급 분류의 귀속 찾기 가보수

1748 단어
이 코드는 컴포지팅 트리를 이용하기 위한 것이지만, 컴포지팅 트리를 사용하면 더욱 효과적일 수 있습니다.
1, 'name'=>'  ', 'parent'=>0),
	array('id'=>2, 'name'=>'  ', 'parent'=>7),
	array('id'=>3, 'name'=>'  ', 'parent'=>8),
	array('id'=>4, 'name'=>'  ', 'parent'=>7),
	array('id'=>5, 'name'=>'  1', 'parent'=>3),
	array('id'=>6, 'name'=>'  ', 'parent'=>8),
	array('id'=>7, 'name'=>'  ', 'parent'=>0),
	array('id'=>8, 'name'=>'  ', 'parent'=>0),
	array('id'=>9, 'name'=>'  2', 'parent'=>3),
	array('id'=>10, 'name'=>'   ', 'parent'=>5),

	);

function familyTree($arr, $id, $lev=1){ //$lev      
	//static $tree = array();
	$tree = array();

	foreach ($arr as $v) {
		if ($v['id'] == $id) {  //      ,     ,            
		 	$v['lev'] = $lev;
		 	//$tree[] = $v;
		
			if ($v['parent']>0) {
			 //	familyTree($arr, $v['parent']);
			 //	array_push($tree, familyTree($arr, $v['parent']));  //             ,   ,    
				$tree = array_merge($tree, familyTree($arr, $v['parent'], $lev+1));
			}
			$tree[] = $v; // 29     ,      
		} 
	}
	return $tree;
}

print_r(familyTree($area, 10));


//$tree = familyTree($area, 10, 1);

// foreach ($tree as $v) {
// 	echo str_repeat('  ', $v['lev']).$v['name'].'
'; // }

좋은 웹페이지 즐겨찾기