'1',

'name'=>'php技术',

'pid'=>'0',

'path'=>'0',

),

array(

'id'=>'2',

'name'=>'linux技术',

'pid'=>'0',

'path'=>'0',

),

array(

'id'=>'3',

'name'=>'Thinkphp',

'pid'=>'1',

'path'=>'0-1',

),

array(

'id'=>'4',

'name'=>'系统安装',

'pid'=>'2',

'path'=>'0-2',

),

array(

'id'=>'5',

'name'=>'文件上传',

'pid'=>'3',

'path'=>'0-1-3',

),

array(

'id'=>'6',

'name'=>'硬盘分区',

'pid'=>'4',

'path'=>'0-2-4',

),

array(

'id'=>'7',

'name'=>'软件安装',

'pid'=>'4',

'path'=>'0-2-4',

),

array(

'id'=>'8',

'name'=>'JAVA技术',

'pid'=>'0',

'path'=>'0',

),

array(

'id'=>'9',

'name'=>'分区格式化',

'pid'=>'4',

'path'=>'0-2-4-6',

),

array(

'id'=>'10',

'name'=>'JAVA基础',

'pid'=>'8',

'path'=>'0-8',

),

);

// 递归子级

function findchild(&$arr,$id){

$childs=array();

foreach ($arr as $key => $value) {

if($value['pid']==$id){

$childs[]=$value;

}

}

return $childs;

}

// 查找当前级别的子级

function build_tree($root_id){

global $rows;

$childs=findchild($rows,$root_id);

if(empty($childs)){

return null;

}

foreach ($childs as $key => $value) {

$rescurTree=build_tree($value['id']);

if(null != $rescurTree){

$childs[$key]['childs']=$rescurTree;

}

}

return $childs;

}

$trees=build_tree(0);

echo "";

print_r($trees);

echo "";

function show($trees){

$pre='';

$str='';

foreach ($trees as $tree) {

if($tree['pid']>0){

$pre='| '.str_repeat(' - ', substr_count($tree['path'],'-'));

}

$str.=$pre.$tree['name'].'

';

if(isset($tree['childs'])){

$str.=show($tree['childs']);

}

}

return $str;

}

echo show($trees);

?>

// $trees数组结构为

Array

(

[0] => Array

(

[id] => 1

[name] => php技术

[pid] => 0

[path] => 0

[childs] => Array

(

[0] => Array

(

[id] => 3

[name] => Thinkphp

[pid] => 1

[path] => 0-1

[childs] => Array

(

[0] => Array

(

[id] => 5

[name] => 文件上传

[pid] => 3

[path] => 0-1-3

)

)

)

)

)

[1] => Array

(

[id] => 2

[name] => linux技术

[pid] => 0

[path] => 0

[childs] => Array

(

[0] => Array

(

[id] => 4

[name] => 系统安装

[pid] => 2

[path] => 0-2

[childs] => Array

(

[0] => Array

(

[id] => 6

[name] => 硬盘分区

[pid] => 4

[path] => 0-2-4

)

[1] => Array

(

[id] => 7

[name] => 软件安装

[pid] => 4

[path] => 0-2-4

)

[2] => Array

(

[id] => 9

[name] => 分区格式化

[pid] => 4

[path] => 0-2-4-6

)

)

)

)

)

[2] => Array

(

[id] => 8

[name] => JAVA技术

[pid] => 0

[path] => 0

[childs] => Array

(

[0] => Array

(

[id] => 10

[name] => JAVA基础

[pid] => 8

[path] => 0-8

)

)

)

)

// $trees输出结果为

php技术

| - Thinkphp

| - - 文件上传

linux技术

| - 系统安装

| - - 硬盘分区

| - - 软件安装

| - - - 分区格式化

JAVA技术

| - JAVA基础

php分类递归类,PHP无限分类(递归)相关推荐

  1. php mysql 分类_php+mysql实现无限分类实例详解

    本文实例讲述了php+mysql实现无限分类的方法.分享给大家供大家参考.具体分析如下: 1.数据库通过设置父类ID来进行唯一索引,然后使用函数的递归调用实现无限分类: 2.数据库设计通过特定格式进行 ...

  2. Php获取分类等级,PHP获取无限分类的完整等级列表

    无限分类其实描述的是成员间的上下级关系.假如一共有五个级别,针对数据描述起来就是个五维数组,这样的数组就完全没有数组的实际价值和意义.这里要讨论的是最终显示出完整的上下级关系,比如: 总经理 技术总监 ...

  3. mysql 存储过程 无限分类_mysql存储过程实现无限分类

    DROP TABLE IF EXISTS `pcms_channel`; CREATE TABLE IF NOT EXISTS `pcms_channel` ( `cid` tinyint(3) un ...

  4. php 循环获取分类,PHP 循环删除无限分类子节点

    private function _deleteSubNode($ids){ $subNodes = array(); $mod = D('Node'); foreach (explode ( ',' ...

  5. 关于PHP各种循环,关于php迭代循环(无限分类)

    看了四年之前写的关于迭代循环的一片文章,已经完全看不懂了,不是逻辑难,而是没有注释,格式不规范,各种不细心,而且没有思路讲解,让人一头雾水.好的介绍是什么?让人看注释就能明白你要干什么,甚至都不用看代 ...

  6. php无限极下拉框,php递归实现无限分类生成下拉列表的函数

    代码如下: /*------------------ */ //– 递归实现无限分类生成下拉列表函数 //– $tpl->assign('sort_list',createSortOptions ...

  7. php 非递归调用,php 无限分类(非递归)

    /** * 无限分类 * 2011/8/24 * kcj * */ include "../conn/conn.php"; $flpid=$_POST['flpid']; $flt ...

  8. php生成option,php递归实现无限分类生成下拉列表的函数

    /*------------------ */ //– 递归实现无限分类生成下拉列表函数 //– $tpl->assign('sort_list',createSortOptions ()); ...

  9. 可能存在无限递归_无限分类递归+排序解剖

    首先我们先了解一下递归函数: 递归函数在语言学习的时候会单独拿出来学习,因为它非常常用,本质上来讲递归函数就是调用自己的函数. 举个例子: test函数里面又再调用了自身,这就是俗称的递归函数!递归函 ...

最新文章

  1. Bottle源码阅读(3) HeaderDict
  2. 翻译: Oralce官方文档-- Data Blocks, Extents, and Segments
  3. Java开发知识之Java面相对象
  4. Android和ios速度,不拼硬件拼体验 Android和iOS系统的加载速度测验
  5. 语音视频社交背后技术深度解析
  6. idea 无法打开项目_Premiere出现quot;项目看来已经损坏,无法打开”的解决方法...
  7. linux nfs 配置_centos7 NFS 配置
  8. [html] 本地存储和cookie之间的区别是什么?
  9. Scala-trait
  10. 开源2D图形库/图形框架
  11. 电脑爱好者 2008年第24期 12月下
  12. 对数学建模有帮助的app—1checker
  13. python爬虫论文总结与展望怎么写_论文总结与展望怎么写
  14. 谈谈PRNU 光响应非均匀性
  15. 使用esp32 作为蓝牙鼠标和键盘以及坑
  16. iOS Instrument使用之Core Animation(图形性能)
  17. android 电池续航时间,高端Android手机电池续航排行榜Droid居榜首
  18. 请编写函数实现自然底数 e=2.718281828
  19. MLY翻译 -- 1.Why Machine Learning Strategy?
  20. lap 加MySQL主从复制_LAP+mysql-主从+redis

热门文章

  1. 【重要补充】关于第三方潜在SDK导致的5.1.2Data use sharing
  2. p2p金融项目+支付宝充值
  3. 吸引力法则,你变了,一切就变了
  4. 嘿从零开始基于SpringBoot 打造在线聊天室(4.4W字最长博文)
  5. Vue+MySQL实现登录注册案例
  6. copa文件服务器,Copa
  7. DataRow对象的RowState和DataRowVersion属性特点
  8. unsupported_grant_type
  9. 新攻击使黑客可以解密VoLTE加密以监视电话
  10. ECharts常用图例