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 ));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值