5行代码足矣,不用递归实现无限分类数据的树形格式化
2013-07-14 11:31
831 查看
[转]5行代码足矣,不用递归实现无限分类数据的树形格式化5月13日
我们知道很多开源软件的无限分类都是采用递归的算法,但是我们知道递归即浪费时间,又浪费空间(内存),上次我也分享了个我自己原创的无限分类生成树的方法,一热心php高手网友给我提出了宝贵的建议,我测试了一下,这段代码的时间非常之短,参考:
/** |
* |
* | 'target='_blank'>http://my.oschina.net/u/918697[/code]
* |
*/ |
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 (); |
} |
/** |
* 将数据格式化成树形结构 |
* |
* |
* |
*/ |
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 ; |
} |
$items = array ( |
1 array ( 'id' => 'pid' => 'name' => '江西省' ), |
2 array ( 'id' => 'pid' => 'name' => '黑龙江省' ), |
3 array ( 'id' => 'pid' => 'name' => '南昌市' ), |
4 array ( 'id' => 'pid' => 'name' => '哈尔滨市' ), |
5 array ( 'id' => 'pid' => 'name' => '鸡西市' ), |
6 array ( 'id' => 'pid' => 'name' => '香坊区' ), |
7 array ( 'id' => 'pid' => 'name' => '南岗区' ), |
8 array ( 'id' => 'pid' => 'name' => '和兴路' ), |
9 array ( 'id' => 'pid' => 'name' => '西大直街' ), |
10 array ( 'id' => 'pid' => 'name' => '东北林业大学' ), |
11 array ( 'id' => 'pid' => 'name' => '哈尔滨工业大学' ), |
12 array ( 'id' => 'pid' => 'name' => '哈尔滨师范大学' ), |
13 array ( 'id' => 'pid' => 'name' => '赣州市' ), |
14 array ( 'id' => 'pid' => 'name' => '赣县' ), |
15 array ( 'id' => 'pid' => 'name' => '于都县' ), |
16 array ( 'id' => 'pid' => 'name' => '茅店镇' ), |
17 array ( 'id' => 'pid' => 'name' => '大田乡' ), |
18 array ( 'id' => 'pid' => 'name' => '义源村' ), |
19 array ( 'id' => 'pid' => 'name' => '上坝村' ), |
); |
echo "<pre>" ; |
print_r(genTree5( $items )); |
print_r(genTree9( $items )); |
/* |
Array |
( |
[0] |
( |
[id] |
[pid] |
[name] =>江西省 |
[son] |
( |
[0] |
( |
[id] |
[pid] |
[name] =>南昌市 |
) |
[1] |
( |
[id] |
[pid] |
[name] =>赣州市 |
[son] |
( |
[0] |
( |
[id] |
[pid] |
[name] =>赣县 |
[son] |
( |
[0] |
( |
[id] |
[pid] |
[name] =>茅店镇 |
[son] |
( |
[0] |
( |
[id] |
[pid] |
[name] =>义源村 |
) |
[1] |
( |
[id] |
[pid] |
[name] =>上坝村 |
) |
) |
) |
[1] |
( |
[id] |
[pid] |
[name] =>大田乡 |
) |
) |
) |
[1] |
( |
[id] |
[pid] |
[name] =>于都县 |
) |
) |
) |
) |
) |
[1] |
( |
[id] |
[pid] |
[name] =>黑龙江省 |
[son] |
( |
[0] |
( |
[id] |
[pid] |
[name] =>哈尔滨市 |
[son] |
( |
[0] |
( |
[id] |
[pid] |
[name] =>香坊区 |
[son] |
( |
[0] |
( |
[id] |
[pid] |
[name] =>和兴路 |
[son] |
( |
[0] |
( |
[id] |
[pid] |
[name] => |
东北林业大学 |
) |
[1] |
( |
[id] |
[pid] |
[name] => |
哈尔滨师范大学 |
) |
) |
) |
) |
) |
[1] |
( |
[id] |
[pid] |
[name] =>南岗区 |
[son] |
( |
[0] |
( |
[id] |
[pid] |
[name] =>西大直街 |
[son] |
( |
[0] |
( |
[id] |
[pid] |
[name] => |
哈尔滨工业大学 |
) |
) |
) |
) |
) |
) |
) |
[1] |
( |
[id] |
[pid] |
[name] =>鸡西市 |
) |
) |
) |
)*/ |
相关文章推荐
- 5行代码 不用递归实现无限分类数据的树形格式化
- PHP不用递归实现无限分类数据的树形格式化 5行9行代码修改
- 9行代码,不用递归实现无限分类数据的树形格式化
- 不用递归实现无限分类数据的树形格式化
- php不用递归实现无限分类数据的树形格式化
- 不用递归实现无限分类数据的树形格式化
- 将树形结构的数据转换为二维数组 (续 PHP非递归方式实现无限分类(转载))
- php 无限分类 树形数据格式化代码
- PHP递归写入MySQL实现无限级分类数据操作示例
- php 实现不用递归的树形数组构造函数 无限级分类
- 不用递归实现无限级分类
- 利用php递归实现无限分类 格式化数组的详解
- 无限分类数据树形格式化
- php 无限分类 树形数据 格式化
- php 实现无限分类5行代码【修正】
- php 递归 实现无限分类 格式化数组
- php实现无限级分类实现代码(递归方法)
- 无限分类数据树形格式化