php关于无限分类的树状输出(id,name,pid)类型
2017-04-21 17:17
633 查看
php关于无限分类的树状输出(id,name,pid)类型
1.简单demo实例
<?php //数组层级缩进转换 function array2level($array, $pid = 0, $level = 1) { static $list = []; foreach ($array as $v) { if ($v['pid'] == $pid) { $v['level'] = $level; $list[] = $v; array2level($array, $v['id'], $level + 1); } } return $list; } //形成树状格式 function arr2tree($tree, $rootId = 0,$level=1) { $return = array(); foreach($tree as $leaf) { if($leaf['pid'] == $rootId) { $leaf["level"] = $level; foreach($tree as $subleaf) { if($subleaf['pid'] == $leaf['id']) { $leaf['children'] = arr2tree($tree, $leaf['id'],$level+1); break; } } $return[] = $leaf; } } return $return; } $arrCate = array( //待排序数组 array( 'id'=>1, 'name' =>'顶级栏目一', 'pid'=>0), array( 'id'=>2, 'name' =>'顶级栏目二', 'pid'=>0), array( 'id'=>3, 'name' =>'栏目三', 'pid'=>1), array( 'id'=>4, 'name' =>'栏目四', 'pid'=>3), array( 'id'=>5, 'name' =>'栏目五', 'pid'=>4), array( 'id'=>6, 'name' =>'栏目六', 'pid'=>2), array( 'id'=>7, 'name' =>'栏目七', 'pid'=>6), array( 'id'=>8, 'name' =>'栏目八', 'pid'=>6), array( 'id'=>9, 'name' =>'栏目九', 'pid'=>7), ); $tree = arr2tree($arrCate); print_r($tree); $result=array2level($arrCate); print_r($result);
$tree打印结果为:
Array ( [0] => Array ( [id] => 1 [name] => 顶级栏目一 [pid] => 0 [level] => 1 [children] => Array ( [0] => Array ( [id] => 3 [name] => 栏目三 [pid] => 1 [level] => 2 [children] => Array ( [0] => Array ( [id] => 4 [name] => 栏目四 4000 [pid] => 3 [level] => 3 [children] => Array ( [0] => Array ( [id] => 5 [name] => 栏目五 [pid] => 4 [level] => 4 ) ) ) ) ) ) ) [1] => Array ( [id] => 2 [name] => 顶级栏目二 [pid] => 0 [level] => 1 [children] => Array ( [0] => Array ( [id] => 6 [name] => 栏目六 [pid] => 2 [level] => 2 [children] => Array ( [0] => Array ( [id] => 7 [name] => 栏目七 [pid] => 6 [level] => 3 [children] => Array ( [0] => Array ( [id] => 9 [name] => 栏目九 [pid] => 7 [level] => 4 ) ) ) [1] => Array ( [id] => 8 [name] => 栏目八 [pid] => 6 [level] => 3 ) ) ) ) ) )
$result打印结果为:
Array ( [0] => Array ( [id] => 1 [name] => 顶级栏目一 [pid] => 0 [level] => 1 ) [1] => Array ( [id] => 3 [name] => 栏目三 [pid] => 1 [level] => 2 ) [2] => Array ( [id] => 4 [name] => 栏目四 [pid] => 3 [level] => 3 ) [3] => Array ( [id] => 5 [name] => 栏目五 [pid] => 4 [level] => 4 ) [4] => Array ( [id] => 2 [name] => 顶级栏目二 [pid] => 0 [level] => 1 ) [5] => Array ( [id] => 6 [name] => 栏目六 [pid] => 2 [level] => 2 ) [6] => Array ( [id] => 7 [name] => 栏目七 [pid] => 6 [level] => 3 ) [7] => Array ( [id] => 9 [name] => 栏目九 [pid] => 7 [level] => 4 ) [8] => Array ( [id] => 8 [name] => 栏目八 [pid] => 6 [level] => 3 ) )
相关文章推荐
- 关于无限分类的树状输出(id,name,pid)类型的
- php 无限级分类,超级简单的无限级分类,支持输出树状图
- php 无限级分类,超级简单的无限级分类,支持输出树状图
- php无限分类且支持输出树状图的详细介绍
- php无限分类, 支持输出树状图
- php无限分类且支持输出树状图的详细介绍
- PHP无限分类代码,支持数组格式化、直接输出菜单两种方式
- C++输出某个数据的类型:关于typeid(a).name()的用法
- mysql和php无限分类 数据归类 输出
- PHP和MySQL处理树状、分级、无限分类、分层数据的方法
- c#——Winform TreeView 赋值(id,name,pid)类型数据
- PHP无限分类代码,支持数组格式化、直接输出菜单两种方式
- PHP和MySQL处理树状、分级、无限分类、分层数据的方法
- 关于php迭代循环(无限分类)
- php递归求无限分类子id;
- 关于在用curl函数post网页数据时,遇上表单提交 type为submit 类型而且没有name和id时可能遇到的问题及其解决方法
- 利用递归获得无限分类的父类名称getParentCategoryFullName
- PHP进阶教程:实现网站的无限分类
- 关于SQL Server下无限多级别分类查询解决办法
- SQL 无限分类,关于如何取某ID项所有的子类和顶级祖先类