博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP无限级分类实现(递归+非递归)
阅读量:6928 次
发布时间:2019-06-27

本文共 1776 字,大约阅读时间需要 5 分钟。

1,'name'=>'电脑','pid'=>0), array('id'=>2,'name'=>'手机','pid'=>0), array('id'=>3,'name'=>'笔记本','pid'=>1), array('id'=>4,'name'=>'台式机','pid'=>1), array('id'=>5,'name'=>'智能机','pid'=>2), array('id'=>6,'name'=>'功能机','pid'=>2), array('id'=>7,'name'=>'超级本','pid'=>3), array('id'=>8,'name'=>'游戏本','pid'=>3), ); /*======================非递归实现========================*/ $tree = array(); //第一步,将分类id作为数组key,并创建children单元 foreach($categories as $category){ $tree[$category['id']] = $category; $tree[$category['id']]['children'] = array(); } //第二步,利用引用,将每个分类添加到父类children数组中,这样一次遍历即可形成树形结构。 foreach($tree as $key=>$item){ if($item['pid'] != 0){ $tree[$item['pid']]['children'][] = &$tree[$key];//注意:此处必须传引用否则结果不对 if($tree[$key]['children'] == null){ unset($tree[$key]['children']); //如果children为空,则删除该children元素(可选) } } } 第三步,删除无用的非根节点数据 foreach($tree as $key=>$category){ if($category['pid'] != 0){ unset($tree[$key]); } } print_r($tree); /*======================递归实现========================*/ $tree = $categories; function get_attr($a,$pid){ $tree = array(); //每次都声明一个新数组用来放子元素 foreach($a as $v){ if($v['pid'] == $pid){ //匹配子记录 $v['children'] = get_attr($a,$v['id']); //递归获取子记录 if($v['children'] == null){ unset($v['children']); //如果子元素为空则unset()进行删除,说明已经到该分支的最后一个元素了(可选) } $tree[] = $v; //将记录存入新数组 } } return $tree; //返回新数组 } echo "
"; print_r(get_attr($tree,0));

  

转载于:https://www.cnblogs.com/xqschool/p/6413300.html

你可能感兴趣的文章
“万能数据库查询分析器”中英文4.02版本 2013-4-3日已在国内几大软件下载网站发布,敬请使用...
查看>>
memstr - Dustfly的专栏 - 博客频道 - CSDN.NET
查看>>
SSH无密码验证登录的实现(转摘)
查看>>
C# 修饰符的总结 default public private protected internal protectedinternal
查看>>
薛定谔之猫_百度百科
查看>>
jason数据格式详解
查看>>
公知_百度百科
查看>>
microsoft.sql.chainer.packagerdata.dll 0x84B10001解决方案
查看>>
让IE支持CSS 3圆角属性的方法(转)
查看>>
MySQL MyISAM与Innodb优化方案比较
查看>>
分享:C语言中Const指针变量(常指针)
查看>>
为ios 应用程序添加图标和添加名字
查看>>
学习C语言一些的好的书和网站
查看>>
[php] 如何将 simplexml_load_string 转换成数组array
查看>>
Ecshop探究之index.php
查看>>
WCF实例上下文以及会话学习
查看>>
Android系统中的广播(Broadcast)机制简要介绍和学习计划
查看>>
Properties 配置文件的读取
查看>>
[后缀数组、不重复子串]SPOJ694、spoj705--Distinct Substrings
查看>>
Mac OS X 10.8.3搭建Android工程源码的编译环境(解决找不到GCC、GIT、PYTHON的问题)...
查看>>