代码
if(!function_exists('deal_list_to_tree')){
/**
* 方法 deal_list_to_tree,一维数组根据$parent_id的值转为多维数组
*
* @param array $data 待处理的一维数组
* @param string $pkName 用于转化为多维数组的主键字段
* @param string $pIdName 用于转化为多维数组的字段(根据该字段值转换)
* @param string $childName 子级的字段名
* @param bool $is_empty_childrens 是否返回空的子数组(childrens[])(true:是,false:否)
* @param string $rootId 根节点$pkName值
*
* @return array $new_data 返回处理好的(多层级)多维数组
*
*/
function deal_list_to_tree($data, $pkName='id', $pIdName='parent_id', $childName='children_list', $is_empty_childrens=false, $rootId=''){
$new_data = [];
foreach($data as $sorData){
if($sorData[$pIdName] == $rootId){
$res = deal_list_to_tree($data, $pkName, $pIdName, $childName, $is_empty_childrens, $sorData[$pkName]);
if(!empty($res) && !$is_empty_childrens){
if(array_key_exists($childName, $sorData)) {
if(array_key_exists($childName, $sorData)){
$sorData[$childName][] = $res[0];
}else{
$sorData[$childName][] = $res;
}
}else{
$sorData[$childName] = $res;
}
}
$new_data[] = $sorData;
}
}
return $new_data;
}
}
结构示例
{
"code": 0,
"msg": "SUCCESS",
"action": "adminc_v1_organization_manage_o_org_get_obs_tree",
"data": [
{
"org_id": "17",
"company_id": "1",
"org_no": "001",
"p_org_no": "",
"org_type": "1",
"remark": "第一级组织(子单位)",
"org_name": "浙江一建",
"node_type": "1",
"children_list": [
{
"dept_id": "22",
"org_no": "001",
"company_id": "1",
"dept_no": "003",
"dept_name": "test",
"p_dept_no": "",
"remark": "111",
"node_type": "2"
},
{
"dept_id": "24",
"org_no": "001",
"company_id": "1",
"dept_no": "004",
"dept_name": "2233w3234",
"p_dept_no": "",
"remark": "3243",
"node_type": "2"
},
{
"dept_id": "25",
"org_no": "001",
"company_id": "1",
"dept_no": "005",
"dept_name": "test111",
"p_dept_no": "",
"remark": "111",
"node_type": "2"
},
{
"org_id": "26",
"company_id": "1",
"org_no": "001001",
"p_org_no": "001",
"org_type": "2",
"remark": "第二级组织(子单位)",
"org_name": "浙江一建总部集团",
"node_type": "1",
"children_list": [
{
"org_id": "27",
"company_id": "1",
"org_no": "001001001",
"p_org_no": "001001",
"org_type": "3",
"remark": "第三级组织(子单位)",
"org_name": "浙江省公司A",
"node_type": "1",
"children_list": [
{
"org_id": "30",
"company_id": "1",
"org_no": "001001001001",
"p_org_no": "001001001",
"org_type": "4",
"remark": "第四级组织(子单位)",
"org_name": "杭州市公司",
"node_type": "1",
"children_list": [
{
"org_id": "32",
"company_id": "1",
"org_no": "001001001001001",
"p_org_no": "001001001001",
"org_type": "5",
"remark": "第五级组织(子单位)",
"org_name": "城北分公司",
"node_type": "1",
"children_list": [
{
"dept_id": "21",
"org_no": "001001001001001",
"company_id": "1",
"dept_no": "001",
"dept_name": "1",
"p_dept_no": "",
"remark": "1",
"node_type": "2"
}
]
}
]
},
{
"org_id": "31",
"company_id": "1",
"org_no": "001001001002",
"p_org_no": "001001001",
"org_type": "4",
"remark": "第四级组织(子单位)",
"org_name": "诸暨市公司",
"node_type": "1"
}
]
},
{
"org_id": "29",
"company_id": "1",
"org_no": "001001002",
"p_org_no": "001001",
"org_type": "3",
"remark": "第三级组织(子单位)",
"org_name": "江西省公司",
"node_type": "1",
"children_list": [
{
"dept_id": "23",
"org_no": "001001002",
"company_id": "1",
"dept_no": "001",
"dept_name": "2233w3234",
"p_dept_no": "",
"remark": "3243",
"node_type": "2"
},
{
"org_id": "33",
"company_id": "1",
"org_no": "001001002001",
"p_org_no": "001001002",
"org_type": "4",
"remark": "第四级组织(子单位)",
"org_name": "上饶市公司",
"node_type": "1",
"children_list": [
{
"dept_id": "11",
"org_no": "001001002001",
"company_id": "1",
"dept_no": "001",
"dept_name": "总经办A",
"p_dept_no": "",
"remark": "上饶市公司-总经理办公室",
"node_type": "2",
"children_list": [
{
"job_id": "18",
"dept_id": "11",
"job_name": "办公室主任",
"remark": "总经办-办公室主任",
"node_type": "3"
}
]
},
{
"dept_id": "12",
"org_no": "001001002001",
"company_id": "1",
"dept_no": "002",
"dept_name": "研发中心",
"p_dept_no": "",
"remark": "上饶市公司-研发中心",
"node_type": "2",
"children_list": [
{
"dept_id": "13",
"org_no": "001001002001",
"company_id": "1",
"dept_no": "002001",
"dept_name": "开发部门",
"p_dept_no": "002",
"remark": "上饶市公司-研发中心-开发部门",
"node_type": "2",
"children_list": [
{
"job_id": "19",
"dept_id": "13",
"job_name": "PHP开发",
"remark": "开发部门-PHP开发",
"node_type": "3"
},
{
"job_id": "20",
"dept_id": "13",
"job_name": "JAVA开发",
"remark": "开发部门-JAVA开发",
"node_type": "3"
},
{
"job_id": "21",
"dept_id": "13",
"job_name": "WEB前端开发",
"remark": "开发部门-WEB前端开发岗位",
"node_type": "3"
}
]
},
{
"dept_id": "14",
"org_no": "001001002001",
"company_id": "1",
"dept_no": "002002",
"dept_name": "产品部门",
"p_dept_no": "002",
"remark": "上饶市公司-研发中心-产品部门",
"node_type": "2",
"children_list": [
{
"job_id": "22",
"dept_id": "14",
"job_name": "产品经理",
"remark": "开发部门-产品经理岗位",
"node_type": "3"
},
{
"job_id": "23",
"dept_id": "14",
"job_name": "UI设计",
"remark": "开发部门-UI设计岗位",
"node_type": "3"
}
]
},
{
"dept_id": "15",
"org_no": "001001002001",
"company_id": "1",
"dept_no": "002003",
"dept_name": "测试部门",
"p_dept_no": "002",
"remark": "上饶市公司-研发中心-测试部门",
"node_type": "2",
"children_list": [
{
"job_id": "24",
"dept_id": "15",
"job_name": "测试主管",
"remark": "开发部门-测试主管岗位",
"node_type": "3"
},
{
"job_id": "27",
"dept_id": "15",
"job_name": "压力测试",
"remark": "测试部门-压力测试岗位",
"node_type": "3"
},
{
"dept_id": "16",
"org_no": "001001002001",
"company_id": "1",
"dept_no": "002003001",
"dept_name": "平台项目组",
"p_dept_no": "002003",
"remark": "上饶市公司-研发中心-测试部门-平台项目组",
"node_type": "2",
"children_list": [
{
"job_id": "25",
"dept_id": "16",
"job_name": "组长",
"remark": "平台项目组-组长岗位",
"node_type": "3"
},
{
"job_id": "26",
"dept_id": "16",
"job_name": "组员",
"remark": "平台项目组-组员岗位",
"node_type": "3"
}
]
}
]
}
]
}
]
}
]
}
]
}
]
}
]
}
**只要思想不滑坡,办法总比困难多