public function arr2tree($list, $id = 'id', $pid = 'pid', $son = 'children')
{
list($tree, $map) = [[], []];
$map = array_column($list, null, $id);
foreach ($list as $item) {
if (isset($item[$pid]) && isset($map[$item[$pid]])) {
$map[$item[$pid]][$son][] = &$map[$item[$id]];
} else {
$tree[] = &$map[$item[$id]];
}
}
unset($map);
return $tree;
}
public function tree2arr($tree = [], $children = 'children')
{
if (empty($tree) || !is_array($tree)) {
return $tree;
}
$arrRes = [];
foreach ($tree as $k => $v) {
$v['html'] = ' ├'.str_repeat('─',$v['level']).' '.$v['sight_name'].' '.$v['sight_level'];
$arrTmp = $v;
unset($arrTmp[$children]);
$arrRes[] = $arrTmp;
if (!empty($v[$children])) {
$arrTmp = $this->tree2arr($v[$children]);
$arrRes = array_merge($arrRes, $arrTmp);
}
}
return $arrRes;
}
public function addGenLevel(&$list, $level = 0) {
$level = $level + 1;
foreach ($list as &$value) {
if (!empty($value['children'])) {
$this->addGenLevel($value['children'], $level);
}
$value['level'] = $level;
}
}
树与二维数组的相互转换
最新推荐文章于 2023-04-18 14:13:29 发布