php无限极目录获取树结构

<?php


$items
=
array
(
    
1 =>
array
(
'id'
=> 1,
'pid'
=> 0,
'name'
=>
'江西省'
),
    
2 =>
array
(
'id'
=> 2,
'pid'
=> 0,
'name'
=>
'黑龙江省'
),
    
3 =>
array
(
'id'
=> 3,
'pid'
=> 1,
'name'
=>
'南昌市'
),
    
4 =>
array
(
'id'
=> 4,
'pid'
=> 2,
'name'
=>
'哈尔滨市'
),
    
5 =>
array
(
'id'
=> 5,
'pid'
=> 2,
'name'
=>
'鸡西市'
),
    
6 =>
array
(
'id'
=> 6,
'pid'
=> 4,
'name'
=>
'香坊区'
),
    
7 =>
array
(
'id'
=> 7,
'pid'
=> 4,
'name'
=>
'南岗区'
),
    
8 =>
array
(
'id'
=> 8,
'pid'
=> 6,
'name'
=>
'和兴路'
),
    
9 =>
array
(
'id'
=> 9,
'pid'
=> 7,
'name'
=>
'西大直街'
),
    
10 =>
array
(
'id'
=> 10,
'pid'
=> 8,
'name'
=>
'东北林业大学'
),
    
11 =>
array
(
'id'
=> 11,
'pid'
=> 9,
'name'
=>
'哈尔滨工业大学'
),
    
12 =>
array
(
'id'
=> 12,
'pid'
=> 8,
'name'
=>
'哈尔滨师范大学'
),
    
13 =>
array
(
'id'
=> 13,
'pid'
=> 1,
'name'
=>
'赣州市'
),
    
14 =>
array
(
'id'
=> 14,
'pid'
=> 13,
'name'
=>
'赣县'
),
    
15 =>
array
(
'id'
=> 15,
'pid'
=> 13,
'name'
=>
'于都县'
),
    
16 =>
array
(
'id'
=> 16,
'pid'
=> 14,
'name'
=>
'茅店镇'
),
    
17 =>
array
(
'id'
=> 17,
'pid'
=> 14,
'name'
=>
'大田乡'
),
    
18 =>
array
(
'id'
=> 18,
'pid'
=> 16,
'name'
=>
'义源村'
),
    
19 =>
array
(
'id'
=> 19,
'pid'
=> 16,
'name'
=>
'上坝村'
),
);

 

function
genTree5(
$items
) {
    
foreach
(
$items
as
$item
)
        
$items
[
$item
[
'pid'
]][
'son'
][
$item
[
'id'
]] = &
$items
[
$item
[
'id'
]];
    
return
isset(
$items
[0][
'son'
]) ?
$items
[0][
'son'
] :
array
();
}
  
/**
 
* 将数据格式化成树形结构
 
* @author Xuefen.Tong
 
* @param array $items
 
* @return array
 
*/
function
genTree9(
$items
) {
    
$tree
=
array
();
//格式化好的树
    
foreach
(
$items
as
$item
)
        
if
(isset(
$items
[
$item
[
'pid'
]]))
            
$items
[
$item
[
'pid'
]][
'son'
][] = &
$items
[
$item
[
'id'
]];
        
else
            
$tree
[] = &
$items
[
$item
[
'id'
]];
    
return
$tree
;
}
  

echo
"<pre>"
;
print_r(genTree5(
$items
));
print_r(genTree9(
$items
));

点赞