PHP数组转树形结构、树形结构转数组
在日常工作中大家会经常遇到将数组转换为树形菜单(如菜单)或者将树形结构转换为数组的场景,下面便是对如上两个场景的实现。
// 原数组格式$data = [ ['id' => 1, 'name' => '常规管理', 'pid' => 0], ['id' => 2, 'name' => '常规管理--二级(1)', 'pid' => 1], ['id' => 3, 'name' => '常规管理--三级(1)', 'pid' => 2], ['id' => 4, 'name' => '常规管理--三级(2)', 'pid' => 2], ['id' => 5, 'name' => '系统配置', 'pid' => 0], ['id' => 6, 'name' => '系统配置--二级(1)', 'pid' => 5], ['id' => 7, 'name' => '系统配置--二级(2)', 'pid' => 5], ['id' => 8, 'name' => '系统配置--三级(1)', 'pid' => 6],];
按照传入参数,以递归的方式组装数据获取树形结构
function ArrayToTree($data, &$tree_data, $pid = 0, $main_field = 'id', $pid_field = 'pid', $child_field = 'child'){ foreach ($data as $val) { if ($val[$pid_field] == $pid) { $child = []; ArrayToTree($data, $child, $val[$main_field], $main_field, $pid_field, $child_field); if (is_array($child) && count($child)) { $val[$child_field] = $child; } $tree_data[] = $val; } }}
转化数据格式
按照传入参数,以递归的方式拆解树形机构获取二维数组
function TreeToArray($tree_data,&$data,$child_field = 'child'){ foreach($tree_data as $val){ if(isset($val[$child_field])){ $child_data=$val[$child_field]; TreeToArray($child_data,$data,$child_field); unset($val[$child_field]); } $data[]=$val; }}
以上便是PHP转树形结构,树形结构转PHP数组的代码实现,日常工作中也会经常遇到,有什么问题欢迎大家讨论和留言,喜欢的同学们点赞关注收藏哦!
来源地址:https://blog.csdn.net/qq_42549289/article/details/127685126