原数据
array(6) {
[0] => array(3) {
["id"] => int(13)
["name"] => string(12) "活动管理"
["pid"] => int(2)
}
[1] => array(3) {
["id"] => int(1)
["name"] => string(9) "驾驶舱"
["pid"] => int(0)
}
[2] => array(3) {
["id"] => int(2)
["name"] => string(12) "活动管理"
["pid"] => int(0)
}
[3] => array(3) {
["id"] => int(3)
["name"] => string(12) "创建活动"
["pid"] => int(13)
}
[4] => array(3) {
["id"] => int(4)
["name"] => string(12) "活动列表"
["pid"] => int(13)
}
[5] => array(3) {
["id"] => int(5)
["name"] => string(18) "缴费证明管理"
["pid"] => int(2)
}
}
调用 方法
/**
* 处理成树形结构数据
* @param array $list 未处理列表
* @param string $pk 主键名
* @param string $pid 关联上级主键名
* @param string $child 下级文件键名
* @param int $root 一级主键参数
* @return array
*/
function generateTree($list, $pk = 'id', $pid = 'pid', $child = 'subordinate', $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;
}
转换后的数据
array(2) {
[0] => array(3) {
["id"] => int(1)
["name"] => string(9) "驾驶舱"
["pid"] => int(0)
}
[1] => array(4) {
["id"] => int(2)
["name"] => string(12) "活动管理"
["pid"] => int(0)
["subordinate"] => array(2) {
[0] => array(4) {
["id"] => int(13)
["name"] => string(12) "活动管理"
["pid"] => int(2)
["subordinate"] => array(2) {
[0] => array(3) {
["id"] => int(3)
["name"] => string(12) "创建活动"
["pid"] => int(13)
}
[1] => array(3) {
["id"] => int(4)
["name"] => string(12) "活动列表"
["pid"] => int(13)
}
}
}
[1] => array(3) {
["id"] => int(5)
["name"] => string(18) "缴费证明管理"
["pid"] => int(2)
}
}
}
}