分享一例php无限级分类生成树的代码,学习下php无限级分类的实现方法,有需要的朋友参考下。
 
   一段非常精简的PHP无限极分类生成树方法,巧在引用。
 
   例子,php实现无限级分类。
 
   代码示例:
 
   <?php
 
   function generateTree($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' => 3, 'name' => '长丰县'),
 
   5 => array('id' => 5, 'pid' => 1, 'name' => '安庆市'),
 
   );
 
   print_r(generateTree($items));
 
   打印的结果:
 
   Array
 
   (
 
   [0] => Array
 
   (
 
   [id] => 1
 
   [pid] => 0
 
   [name] => 安徽省
 
   [son] => Array
 
   (
 
   [0] => Array
 
   (
 
   [id] => 3
 
   [pid] => 1
 
   [name] => 合肥市
 
   [son] => Array
 
   (
 
   [0] => Array
 
   (
 
   [id] => 4
 
   [pid] => 3
 
   [name] => 长丰县
 
   )
 
   )
 
   )
 
   [1] => Array
 
   (
 
   [id] => 5
 
   [pid] => 1
 
   [name] => 安庆市
 
   )
 
   )
 
   )
 
   [1] => Array
 
   (
 
   [id] => 2
 
   [pid] => 0
 
   [name] => 浙江省
 
   )
 
   )
 
   上面生成树方法还可以精简到5行:
 
   代码示例:
 
   <?php
 
   function generateTree($items){
 
   foreach($items as $item)
 
   $items[$item['pid']]['son'][$item['id']] = &$items[$item['id']];
 
   return isset($items[0]['son']) ? $items[0]['son'] : array();
 
   }
 
   上面这种无限极分类数据树形结构化的方法值得借鉴。
 
   感觉这段代码实际用途并不明显啊,想取出格式化的树形数据还是要递归啊:
 
   代码示例: www.lefeng123.com
 
   /**
 
   * 如何取数据格式化的树形数据
 
   * @site <
 
   */
 
   $tree = generateTree($items);
 
   function getTreeData($tree){
 
   foreach($tree as $t){
 
   echo $t['name'].'<br>';
 
   if(isset($t['son'])){
 
   getTreeData($t['son']);
 
   }
 
   }
 
   }
 
   getTreeData($tree);

PHP无限级分类生成树实例代码的更多相关文章

  1. 使用BERT进行情感分类预测及代码实例

    文章目录 0. BERT介绍 1. BERT配置 1.1. clone BERT 代码 1.2. 数据处理 1.2.1预训练模型 1.2.2数据集 训练集 测试集 开发集 2. 修改代码 2.1 加入 ...

  2. php利用递归函数实现无限级分类

    相信很多学php的很多小伙伴都会尝试做一个网上商城作为提升自己技术的一种途径.各种对商品分类,商品名之类的操作应该是得心应手,那么就可以尝试下无限级分类列表的制作了. 什么是无限级分类? 无限级分类是 ...

  3. thinkphp中如何实现无限级分类?

    thinkphp中如何实现无限级分类? 一.总结 1.数据表设计+递归算法 二.php实现无限级分类实例总结 1.数据库数据如下: 2.任务需求:给一个id,求自己和所有父亲. 3.实现代码如下:th ...

  4. MyBatis无限级分类实现的两种方法--自关联与map集合

    1.这回先创建数据库吧 下表cid是CategoryId的缩写,cname是CategoryName的缩写,pid是parentId的缩写 无限级分类一般都包含这三个属性,至少也要包含cid和pid才 ...

  5. PHP读取超大文件的实例代码

    数据量大带来的问题就是单个文件很大,能够打开这个文件相当不容易,记事本就不要指望了,果断死机   去年年底的各种网站帐号信息的数据库泄漏,很是给力啊,趁机也下载了几个数据库,准备学学数据分析家来分析一 ...

  6. PHP无限极分类生成树方法,无限分级

    你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我觉得你应该换换了.这是我在OSChina上看到的一段非常精简的PHP无限极分类生成树方法,巧在引用,整理分享了. function g ...

  7. (实用篇)PHP递归实现无限级分类

    在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类. 在一些复杂的系统中,要求对信 ...

  8. PHP无限级分类-递归(不推荐)

    [http://www.helloweba.com/view-blog-204.html] 在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢? ...

  9. PHP无限极分类生成树方法

    你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我觉得你应该换换了.这是我在OSChina上看到的一段非常精简的PHP无限极分类生成树方法,整理分享了. function genera ...

随机推荐

  1. 将银行读卡设备读取到的身份证头像Bitmap属性转换成路径

    需求是这样的,在项目开发的时候要求读取身份证,读到身份证的所有信息(信息里面包括头像属性,类型是Bitmap的).然后服务器要求我传过去的头像信息是String类型的Uri路径. 这是读卡器读到的身份 ...

  2. 《Ruby语言入门教程v1.0》学习笔记-01

    <Ruby语言入门教程v1.0> 编著:张开川 邮箱:kaichuan_zhang@126.com 想要学习ruby是因为公司的自动化测试使用到了ruby语言,但是公司关于ruby只给了一 ...

  3. 彻底解决Unknown ASTNode child: LambdaExpression 错误

    错误原因:        在于 androidStudio lint检查的时候 会把Lamda表达式 认为是错误的.解决办法:    1.打开项目中中的lint.xml改为如下格式: <?xml ...

  4. AOP Concepts

    As with most technologies, AOP comes with its own specific set of concepts and terms. It is importan ...

  5. Migration workstation vms to openstack kvm

    Migration workstation vms to openstack kvm 分别分成(磁盘是否拆分,vms 是否 有多个磁盘驱动器) 1, linux迁移 vmware workstatio ...

  6. Opencv学习笔记(六)SURF学习笔记

    原创文章,转载请注明出处:http://blog.csdn.net/crzy_sparrow/article/details/7392345 本人挺菜的,肯定有非常多错误纰漏之处 ,希望大家不吝指正. ...

  7. logcat使用

    做android有些日子了,只是对主要的logcat的具体使用方法还是非常模糊,今天有空,学习一下. logcat能够在adb中使用,也能够直接在命令行下使用. logcat [options] [f ...

  8. css04使用外部样式

    1.创建一个新的html页面 <!DOCTYPE html> <html> <head lang="en"> <meta charset= ...

  9. C#中MD5加密

    C#中进行MD5加密需要使用MD5这个类,这个类位于System.Security.Cryptography命名空间. 转到元数据得知MD5是抽象类和两个静态方法 上代码详解: //得到其静态方法创建 ...

  10. Spring 3.0就这么简单读书笔记

    一般情况下,spring容器中的大部分Bean都是单实例的,所以一般无须通过@Repository.@Service.@Component等注解的value属性为Bean指定名称,也无须使用@Qual ...