首先创建无限分类的数据表,我这里采用的是id、name、pid这种类型(当然还有很多种无限分类的方式了,比如:id、name、pid、path。left、right左右节点的形式)

CREATE TABLE `class` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` varchar(128) default NULL,
`pid` int(11) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8                                                         

我这里就用数组来模拟,不添加数据了。。。

$items = array(
1 => array('sid' => 1, 'pid' => 0, 'name' => '江西省'),
2 => array('sid' => 2, 'pid' => 0, 'name' => '黑龙江省'),
3 => array('sid' => 3, 'pid' => 1, 'name' => '南昌市'),
4 => array('sid' => 4, 'pid' => 2, 'name' => '哈尔滨市'),
5 => array('sid' => 5, 'pid' => 2, 'name' => '鸡西市'),
6 => array('sid' => 6, 'pid' => 4, 'name' => '香坊区'),
7 => array('sid' => 7, 'pid' => 4, 'name' => '南岗区'),
8 => array('sid' => 8, 'pid' => 6, 'name' => '和兴路'),
9 => array('sid' => 9, 'pid' => 7, 'name' => '西大直街'),
10 => array('sid' => 10, 'pid' => 8, 'name' => '东北林业大学'),
11 => array('sid' => 11, 'pid' => 9, 'name' => '哈尔滨工业大学'),
12 => array('sid' => 12, 'pid' => 8, 'name' => '哈尔滨师范大学'),
13 => array('sid' => 13, 'pid' => 1, 'name' => '赣州市'),
14 => array('sid' => 14, 'pid' => 13, 'name' => '赣县'),
15 => array('sid' => 15, 'pid' => 13, 'name' => '于都县'),
16 => array('sid' => 16, 'pid' => 14, 'name' => '茅店镇'),
17 => array('sid' => 17, 'pid' => 14, 'name' => '大田乡'),
18 => array('sid' => 18, 'pid' => 16, 'name' => '义源村'),
19 => array('sid' => 19, 'pid' => 16, 'name' => '上坝村'),
20 => array('sid' => 20, 'pid' => 0, 'name' => '广东省'),
21 => array('sid' => 21, 'pid' => 20, 'name' => '广州市'),
22 => array('sid' => 22, 'pid' => 20, 'name' => '东莞市'),
);

代码如下:

$t = array();
foreach ($items as $id => $item) {
  echo $item['pid'];
  if ($item['pid']) {
    $items[$item['pid']][$item['sid']] = &$items[$item['sid']];
    $t[] = $id;
  }
}

foreach($t as $u) {
  unset($items[$u]);
}
echo "<pre>";
print_r($items);
echo "</pre>";

打印的结果如下:

以上代码是我在网上搜集的,觉得比较经典,而且相对于其他的来说,代码量也少。。

感谢网络中的大神能和我们一起分享。。。

关于无限分类的树状输出(id,name,pid)类型的的更多相关文章

  1. 104)PHP,目录树状输出

    使用特定数量的缩进达到树状目的! 核心问题,计算需要缩进的数量! 缩进级别,与递归调用深度保持一致.每当执行一级递归操作,所找到的文件的缩进级别+; 语法实现: 增加一个参数,表示当前函数调用的深度级 ...

  2. JS当中的无限分类递归树

    列表转换成树形结构方法定义: //javascript 树形结构 function toTree(data) { // 删除 所有 children,以防止多次调用 data.forEach(func ...

  3. SqlServer与Linq 无限递归目录树且输出层级

    ALTER VIEW [dbo].[view_TreeLevel] AS WITH cte AS ( SELECT a.ModuleID , a.Module_Name , a.Module_Desc ...

  4. php递归方法实现无限分类实例

    数组:  代码如下 复制代码 $items = array( array('id' => 1, 'pid' => 0, 'name' => '一级11' ), array('id' ...

  5. PHP利用递归法获取多级类别的树状数组

    数据结构:category(id, pid, name),对应:信息ID,父项ID,类别名 测试数据: $aryCate = array( array('id' => 1, 'pid' => ...

  6. 树状数组初步_ZERO

    原博客:树状数组 1 一维树状数组 1 什么是树状数组        树状数组是一个查询和修改复杂度都为log(n)的数据结构,假设数组A[1..n],那么查询A[1]+-+A[n]的时,间是log级 ...

  7. js List<Map> 将偏平化的数组转为树状结构并排序

    数据格式: [ { "id":"d3e8a9d6-e4c6-4dd8-a94f-07733d3c1b59", "parentId":&quo ...

  8. Linux命令之pstree - 以树状图显示进程间的关系

    pstree命令以树状图显示进程间的关系(display a tree of processes).ps命令可以显示当前正在运行的那些进程的信息,但是对于它们之间的关系却显示得不够清晰.在Linux系 ...

  9. [Linux] Linux命令之pstree - 以树状图显示进程间的关系

    转载自: http://codingstandards.iteye.com/blog/842156 pstree命令以树状图显示进程间的关系(display a tree of processes). ...

随机推荐

  1. [C.Sharp] Color 颜色转换

    URL:http://www.cnblogs.com/taven/archive/2009/09/26/1574329.html 方法1: 引用命名空间:using System.Drawing; 1 ...

  2. 【Android 界面效果15】Android UI 之一步步教你自定义控件(自定义属性、合理设计onMeasure、合理设计onDraw等)

        Android开发做到了一定程度,多少都会用到自定义控件,一方面是更加灵活,另一方面在大数据量的情况下自定义控件的效率比写布局文件更高.     一个相对完善的自定义控件在布局文件中和java ...

  3. C如何使用内存

    栈:   自动变量:auto.变量的地址在栈中.   C语言函数调用的实现: 在调用方,参数从后往前按顺序被堆积在栈中 和函数调用关联的返回信息(返回地址等)也被堆积在栈中. 一旦函数调用结束,局部变 ...

  4. iOS 犄角旮旯的知识

    1.全局变量 static NSInteger kImageHeight = 300; #define kImageHeight 300 2.通知中心 开始编辑 UITextViewTextDidBe ...

  5. java 动态代理范例 InvocationHandler与Proxy

    java 动态代理范例 InvocationHandler与Proxy,拦截与代理 java.lang.reflect.Proxy,Proxy 提供用于创建动态代理类和实例的静态方法.newProxy ...

  6. jquery.validate.js实例演示

    validate是前端重要的交互手段,提升性能的同时更能提升用户操作体验,validate的实现大概有三种方式:HTML5部分支 持,validate验证框架,手动写js或ajax调用接口.使用val ...

  7. JS 获取WEB请求路径

    function getRealPath(){      //获取当前网址,如: http://localhost:8083/myproj/view/my.jsp       var curWwwPa ...

  8. 【CSS3】---background-origin background-clip background-size

    background-origin 设置元素背景图片的原始起始位置. 语法: background-origin : border-box | padding-box | content-box; 参 ...

  9. JavaScript--DOM基础(19)

    // DOM(Document Object Model)即文档对象模型,针对HTML和XML文档的API(应用程序接口); // DOM描绘了一个层次化的节点树,运行开发人员可以添加/移除和修改页面 ...

  10. SQL语句新建表,同时添加主键、索引、约束

    SQL语句新建数据表   主键,索引,约束 CREATE TABLE [dbo].[T_SendInsideMessageRec]( [SendInsideMID] [uniqueidentifier ...