PHP学习_PHP技术_PHP网站建设_PHP程序员专注于PHP技术研究及学习

Adophper » 编程开发 » php无限分类数据的树形格式化

php无限分类数据的树形格式化

此文被围观1237日期: 2012-09-17 分类 : 编程开发  标签:  ·····
今天在 开源中国 上看到一个无限分类数据的树形格式化。 我们知道很多开源软件的无限分类都是采用递归的算法,但是我们知道递归即浪费时间,又浪费空间(内存), 上次我也分享了个我自己原创的无限分类生成树的方法,一热心php高手网友给我提出了宝贵的建议,我测试了一下,这段代码的时间非常之短,参考: http://www.oschina.net/code/snippet_98719_11296,我再次整理了一下,发现数据库查询出数据之后,我们就已经定好了键值,因而实践中,我们一般会在model中查询出格式化成主键值对应数据的形式,因而我们可以直接用这样的数据,就少了一层循环。代码也非常简洁。 <?php /** * 将数据格式化成树形结构 * @author Xuefen.Tong * @param array $items * @return array */ function genTree($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' => 1, 'pid' => 0, 'name' => '一级11'), 2 => array('id' => 2, 'pid' => 1, 'name' => '二级21'), 3 => array('id' => 3, 'pid' => 1, 'name' => '二级23'), 4 => array('id' => 4, 'pid' => 9, 'name' => '三级31'), 5 => array('id' => 5, 'pid' => 4, 'name' => '四级43'), 6 => array('id' => 6, 'pid' => 9, 'name' => '三级32'), 7 => array('id' => 7, 'pid' => 4, 'name' => '四级41'), 8 => array('id' => 8, 'pid' => 4, 'name' => '四级42'), 9 => array('id' => 9, 'pid' => 1, 'name' => '二级25'), 10 => array('id' => 10, 'pid' => 11, 'name' => '二级22'), 11 => array('id' => 11, 'pid' => 0, 'name' => '一级12'), 12 => array('id' => 12, 'pid' => 11, 'name' => '二级24'), 13 => array('id' => 13, 'pid' => 4, 'name' => '四级44'), 14 => array('id' => 14, 'pid' => 1, 'name' => '二级26'), 15 => array('id' => 15, 'pid' => 8, 'name' => '五级51'), 16 => array('id' => 16, 'pid' => 8, 'name' => '五级52'), 17 => array('id' => 17, 'pid' => 8, 'name' => '五级53'), 18 => array('id' => 18, 'pid' => 16, 'name' => '六级64'), ); echo "<pre>"; print_r(genTree($items));

本站使用ThinkPHP框架开发读图网主题,目前托管在阿里云,图片由读图网提供. 蜀ICP备12031064号

Copyright © 2011-2018adophper.com All Rights Reserved.