欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 首先看代码实现 function generateTree($items){ $tree = array(); foreach($items as $item){ if(isset($items[$item['pid']])){ $items[$item['pid']]['son'][] = $items[$item['id']];

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

首先看代码实现

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行:

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();

}

上面这种无限极分类数据树形结构化的方法值得借鉴。但是我觉得这段代码实际用途并不明显啊,你想取出格式化的树形数据还是要递归啊:

/**

* 如何取数据格式化的树形数据

*/

$tree = generateTree($items);

function getTreeData($tree){

foreach($tree as $t){

echo $t['name'].'

';

if(isset($t['son'])){

getTreeData($t['son']);

}

}

}

getTreeData($tree);

不明白为什么他还要递归取出,如果把generateTree()的返回值 输出为json给前端不好吗?

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php+无限级分类+json,PHP无限极分类巧用引用生成树相关推荐

  1. php无极限分类讲解,php无限极分类入门教程

    这篇文章主要介绍了PHP无限极分类函数的实现方法,结合实例形式详细分析了php实现无限极分类的具体思路.实现代码与相关注意事项,需要的朋友可以参考下本文实例讲述了PHP无限极分类函数的实现方法.分享给 ...

  2. php代码实现无限极分类,PHP实现无限极分类_php

    利用两个for循环实现无限级分类 表: 字段名 字段类型 备注 默认值 id int 主键 auto-increment name varchar 分类名称 pid int 父类id 0 顶级分类的 ...

  3. php无限极分类思路,php无限极分类的方法

    本篇文章主要介绍php无限极分类的方法,感兴趣的朋友参考下,希望对大家有所帮助. 代码如下:<?php $conn = mysql_connect("localhost",& ...

  4. php实现无限极分类算法,PHP无限极分类函数的实现方法实例详解

    这篇文章主要介绍了PHP无限极分类函数的实现方法,结合实例形式详细分析了php实现无限极分类的具体思路.实现代码与相关注意事项,需要的朋友可以参考下 本文实例讲述了PHP无限极分类函数的实现方法.分享 ...

  5. php 无限极分类树,php无限极分类 类 tree.class.php

    /** * 通用的树型类,可以生成任何树型结构 */ class tree { /** * 生成树型结构所需要的2维数组 * @var array */ public $arr = array(); ...

  6. 简述php无限极分类,php之无限极分类

    css权威指南-基本视觉格式化(水平与垂直) 1.基本概念     (1)正常流:是指西方语言文本从左向右,从上向下显示.如果要让一个元素不在正常流中国,唯一的办法                   ...

  7. 无限级分类 php_php无限极分类的方法是什么

    今天给大家带来的是php的无限极分类技术,本人把无限极分类划分为两种.具体方法如下: 首先我把数据库表给大家看看,数据库是tasks,数据库表也是tasks. 相关推荐:<PHP教程> 第 ...

  8. php无限级分类是什么意思,php无限极分类是什么意思

    php无限极分类简单点说就是一个类可以分成多个子类,然后一个子类又可以分另外多个子类这样无限分下去,就好象windows可以新建一个文件夹,然后在这个文件夹里又可以建一些个文件夹,在文件夹底下还可以建 ...

  9. 无限级分类 php_php无限极分类实现方法分析

    本文实例讲述了php无限极分类实现方法.分享给大家供大家参考,具体如下: 今天给大家带来的是php的无限极分类技术,本人把无限极分类划分为两种. 首先我把数据库表给大家看看,数据库是tasks,数据库 ...

最新文章

  1. 微信小程序_Bug解决_setData失效
  2. linux kill命令使用
  3. Oracle学习笔记:备份、还原、恢复的一点理解
  4. ant external lib
  5. PHP---错误处理(error)
  6. Spring_02_AOP初级总结
  7. 【转】WOPI host消息体结构
  8. 当年赫赫有名的“四大工学院”,如今都发展得怎样?依然牛气冲天
  9. Android图片压缩,不失真,上线项目
  10. 关于Spring Cloud微服务框架的一些概念
  11. 5.2.7 原子操作的释放函数
  12. 输出某年某月某日的c语言程序,输入某年某月某日,输出这是今年的第几天,C语言问题...
  13. 服务器装系统bios设置方法,重装系统时BIOS的设置方法
  14. Linux之NTFS、FAT32、exFAT 各种格式硬盘挂载整理
  15. 离别,总免不了有些悲伤
  16. html打印页标题行,打印标题行的设置方法
  17. dom4j 学习 -- 封装dom4j工具类+如何使用dom4j解析
  18. 洛谷 P2071 座位安排 seat.cpp/c/pas
  19. 基于量桨搭建AI量子通信模拟平台,优化量子通信协议
  20. 怎么像“一朵云”一样管理“多个云”?

热门文章

  1. 管理艾泰路由器WEB认证帐号脚本
  2. 多线程随想录——多线程分块下载文件
  3. 蔬菜水果肉类奶制品厨房用具英语表达
  4. 夫妻、情侣必看,《半个西瓜》
  5. ChatGPT - ChatPPT快速生成PPT
  6. 手机camera新篇章
  7. iOS小技能:富文本图文混排
  8. mysql表结构导出成Excel格式带备注
  9. 如何在一个APP内检测手机内安装了另外一个APP并且跳转到另外一个APP内?
  10. Linux防火墙基本命令(干货)