千家信息网

php无限分类树形数据格式化代码分享

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本篇内容主要讲解"php无限分类树形数据格式化代码分享",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"php无限分类树形数据格式化代码分享"吧!我们知道很多
千家信息网最后更新 2025年11月07日php无限分类树形数据格式化代码分享

本篇内容主要讲解"php无限分类树形数据格式化代码分享",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"php无限分类树形数据格式化代码分享"吧!

我们知道很多开源软件的无限分类都是采用递归的算法,但是我们知道递归即浪费时间,又浪费空间(内存),
上次我也分享了个我自己原创的无限分类生成树的方法,一热心php高手网友给我提出了宝贵的建议,我测试了一下,这段代码的时间非常之短参考: http://www.oschina.net/code/snippet_98719_11296,我再次整理了一下,发现数据库查询出数据之后,我们就已经定好了键值,因而实践中,我们一般会在model中查询出格式化成主键值对应数据的形式,因而我们可以直接用这样的数据,就少了一层循环。代码也非常简洁。

原来的代码:

function genTree($items,$id='id',$pid='pid',$son = 'children'){  $tree = array(); //格式化的树  $tmpMap = array(); //临时扁平数据     foreach ($items as $item) {    $tmpMap[$item[$id]] = $item;  }     foreach ($items as $item) {    if (isset($tmpMap[$item[$pid]])) {      $tmpMap[$item[$pid]][$son][] = &$tmpMap[$item[$id]];    } else {      $tree[] = &$tmpMap[$item[$id]];    }  }  unset($tmpMap);  return $tree;} $items1 = array(    array('id' => 1, 'pid' => 0, 'name' => '一级11' ),    array('id' => 11, 'pid' => 0, 'name' => '一级12' ),    array('id' => 2, 'pid' => 1, 'name' => '二级21' ),    array('id' => 10, 'pid' => 11, 'name' => '二级22' ),    array('id' => 3, 'pid' => 1, 'name' => '二级23' ),    array('id' => 12, 'pid' => 11, 'name' => '二级24' ),    array('id' => 9, 'pid' => 1, 'name' => '二级25' ),    array('id' => 14, 'pid' => 1, 'name' => '二级26' ),    array('id' => 4, 'pid' => 9, 'name' => '三级31' ),    array('id' => 6, 'pid' => 9, 'name' => '三级32' ),    array('id' => 7, 'pid' => 4, 'name' => '四级41' ),    array('id' => 8, 'pid' => 4, 'name' => '四级42' ),    array('id' => 5, 'pid' => 4, 'name' => '四级43' ),    array('id' => 13, 'pid' => 4, 'name' => '四级44' ),    array('id' => 15, 'pid' => 8, 'name' => '五级51' ),    array('id' => 16, 'pid' => 8, 'name' => '五级52' ),    array('id' => 17, 'pid' => 8, 'name' => '五级53' ),    array('id' => 18, 'pid' => 16, 'name' => '六级64' ),); var_dump(genTree($items1));

以下是补充:

/** * 此方法由@Tonton 提供 * http://my.oschina.net/u/918697 * @date 2012-12-12 */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;} $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' => '上坝村'),);print_r(genTree5($items));print_r(genTree9($items));//后者输出格式,前者类似,只是数组键值不一样,不过不影响数据结构/*Array([0] => Array  (    [id] => 1    [pid] => 0    [name] => 江西省    [son] => Array      (        [0] => Array          (            [id] => 3            [pid] => 1            [name] => 南昌市          )         [1] => Array          (            [id] => 13            [pid] => 1            [name] => 赣州市            [son] => Array              (                [0] => Array                  (                    [id] => 14                    [pid] => 13                    [name] => 赣县                    [son] => Array                      (                      [0] => Array                        (                          [id] => 16                          [pid] => 14                          [name] => 茅店镇                          [son] => Array                            (                            [0] => Array                              (                              [id] => 18                              [pid] => 16                              [name] => 义源村                              )                             [1] => Array                              (                              [id] => 19                              [pid] => 16                              [name] => 上坝村                              )                             )                         )                       [1] => Array                        (                          [id] => 17                          [pid] => 14                          [name] => 大田乡                        )                       )                   )                 [1] => Array                  (                    [id] => 15                    [pid] => 13                    [name] => 于都县                  )               )           )       )   ) [1] => Array  (    [id] => 2    [pid] => 0    [name] => 黑龙江省    [son] => Array      (        [0] => Array          (            [id] => 4            [pid] => 2            [name] => 哈尔滨市            [son] => Array              (              [0] => Array                (                  [id] => 6                  [pid] => 4                  [name] => 香坊区                  [son] => Array                    (                    [0] => Array                      (                        [id] => 8                        [pid] => 6                        [name] => 和兴路                        [son] => Array                          (                            [0] => Array                              (                              [id] => 10                              [pid] => 8                              [name] =>                               东北林业大学                              )                             [1] => Array                              (                              [id] => 12                              [pid] => 8                              [name] =>                              哈尔滨师范大学                              )                           )                       )                     )                 )               [1] => Array                (                  [id] => 7                  [pid] => 4                  [name] => 南岗区                  [son] => Array                    (                    [0] => Array                      (                      [id] => 9                      [pid] => 7                      [name] => 西大直街                      [son] => Array                        (                        [0] => Array                          (                          [id] => 11                          [pid] => 9                          [name] =>                           哈尔滨工业大学                          )                         )                       )                     )                 )               )           )         [1] => Array          (            [id] => 5            [pid] => 2            [name] => 鸡西市          )       )   ))*/

到此,相信大家对"php无限分类树形数据格式化代码分享"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

数据 格式 代码 哈尔 分类 树形 大学 查询 内容 大田 师范 师范大学 方法 时间 林业 结构 茅店 和兴 黑龙 上坝村 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网是哪次科技革命成果 网关 网络安全防护手段 小学生网络安全知识小视频 疫情大数据库 郑州明德软件开发有限公司在哪 网信网络安全认证 数据库系统分析的书籍 邯郸网络技术哪个好 在服务器里怎么安装mysql 广西顺位互联网科技有限公司 打造网络安全新高度 网络技术网络规划与设计 教务系统网络安全宣传周先进个人 电脑改装服务器 网络安全专业发展方向 oracle数据库验证不了 南京现代软件开发注意事项 无线网络安全和区块链 方舟单人能玩服务器闪退怎么办 兰州互动法治文化展馆软件开发 南沙软件开发哪家正规 网络安全责任分为几种 职高计算机网络技术容易学吗 邯郸网络技术哪个好 贵州省兴义监狱网络安全管理 深州市南北软件开发工作室 幼儿园网络安全手抄报最简单 数据库的恢复步骤 兰州互动法治文化展馆软件开发 软件开发如何推广运营
0