/**
* 从数据库查询结构组装树状结构(递归)
* @param $arr 数据库查询结果 [
* ['id'=>1 , 'name'=> '111' , 'pid'=>0, ] ,
* ['id'=>2 , 'name'=> '112' , 'pid'=>1, ] ,
* ['id'=>3 , 'name'=> '113' , 'pid'=>2, ] ,
* ['id'=>7, 'name'=> '117' , 'pid'=>0, ] ,
* ['id'=>8, 'name'=> '118' , 'pid'=>7, ] ,
* ];
* @param int $pid 上一级ID
* @param int $level 级别,第一级是0
* @param string $itemField 主键字段名
* @param string $pidField 上级字段名
* @param string $childField 下一级列表key名
* @param string $levelField 级别key名
* @return array $list 最终的树状结构
*/
public static function getTree($arr, $pid = 0, $level = 1, $itemField = 'id', $pidField = 'pid', $childField = 'child', $levelField = 'level')
{
if (empty($arr) || !is_array($arr)) {
return [];
}
$list = [];
foreach ($arr as $k => &$v) {
if ($v[$pidField] == $pid) {
$v[$levelField] = $level;
$v[$childField] = self::getTree($arr, $v[$itemField], $level + 1);
$list[] = $v;
}
}
return $list;
}
PHP通用递归方法
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 之前在自己的项目中,遇到了这样一需求,项目里有聊天的功能,需要自己管理好友列表,而且好友是属于有上下级的关系,...
- 1、二维数组按照指定字段排序 /***排序二维数组*@param$arrUsers 排序数组*@params...
- 第一步、创建数据库 数据表创建直接复制到mysql管理器里直接运行即可。 DROP TABLE IF EXISTS...