private function categoriesTree($categories, $fid = 0, $level = 0) { static $tree = []; foreach ($categories as $key => $category) { if ($fid == $category['CategoryID']) { $category['level'] = $level; $tree[] = $category; unset($categories[$key]); self::categoriesTree($categories, $category['ID'], $level + 1); } } return $tree; }
/* * 获得递归完的数据,遍历生成分类 */ $array = getTree($array); foreach($array) as $value{ echo str_repeat('--', $value['level']), $value['name'].'<br />'; }
这种方式也不错:
/**
* 生成树:无限级菜单
*
* @param array $items 数据
* @param string $idFieldName 主键字段名,一般为id
* @param string $fIdFieldName 上级id名,如:fid,pid之类
* @return array
*/
public function toTree($items, $idFieldName, $fIdFieldName)
{
$map = [];
$tree = [];
if($items){
//数据的ID名生成新的引用索引树
foreach ($items as &$it) {
$map[$it[$idFieldName]] = &$it;
}
foreach ($items as &$it) {
$parent = &$map[$it[$fIdFieldName]];
if ($parent) {
$parent['son'][] = &$it;
} else {
$tree[] = &$it;
}
}
$tree=treeLevel($tree);//上面的level超过2层就不对了
}
return $tree;
}
function treeLevel($tree, $level = 1)
{
foreach ($tree as $i => &$item) {
$item['level'] = $level;
if (isset($item['son'])) {
treeLevel($item['son'], $level + 1);
}
}
return $tree;
}
这种更简单:
/**
* 无限递归树
*/
function make_tree($list, $pk = 'id', $pid = 'parent_id', $child = 'son', $root = 0)
{
$tree = array();
$packData = array();
foreach ($list as $data) {
$packData[$data[$pk]] = $data;
}
foreach ($packData as $key => $val) {
if ($val[$pid] == $root) {//代表跟节点
$tree[] =& $packData[$key];
} else {
//找到其父类
$packData[$val[$pid]][$child][] =& $packData[$key];
}
}
return $tree;
}
- 相关文章
- phpexcel设置行高及列宽,背景颜色,
- 单点登录sso原理及php实现方式及de
- 在php中用curl请求java接口无法获
- 免费ip地址查询接口
- php,java,android, aes加解密-加密
- 地图上计算两点间的距离
- 关于百度地图的一些技巧
- php中empty,is_null,isset的区别
- windows及linux下composer安装教程
- 一种精妙的数据查询与存储方式
- 热门文章
- win7中将文件拷贝到虚拟机linux下
- phpexcel设置行高及列宽,背景颜色,
- rabbitmq无法启动
- intellij idea不显示git push按钮
- php7中使用mongodb的aggregate进行
- centos7.4 64位下swoole安装及配置
- laravel页面静态化的方法
- navicate连接mycat报1184错误
- 单点登录sso原理及php实现方式及de
- devops-jenkins容器为pending状态
- 好评文章
- phpexcel设置行高及列宽,背景颜色,
- php7中使用mongodb的aggregate进行
- intellij idea打开文件所在文件夹
- windows下使用MongoDB Compass Com
- win7中将文件拷贝到虚拟机linux下
- laravel 中悲观锁 & 乐观锁的使用
- 单点登录sso原理及php实现方式及de
- navicate连接mycat报1184错误
- rabbitmq无法启动
- laravel整合dingo/api方法步骤:jwt
- 我的项目
- 【github】www.github.com/hurong241
- 【码云】gitee.com/hu_rong/projects
- 【docker hub】hub.docker.com/repositories/hurong241
- 【packagist】packagist.org/users/hurong241/packages
- 站点信息
- 建站时间:2011年
- 文章数:610篇
- 浏览数:953068