PHP二维数组转树形,树形转二维数组
super
2020-12-22 14:42
3483
二维数组转为树形
if (!function_exists('tree')) {
/**
* 二维数组 转为 树形结构
* @author super
* @time 2020-12-22 10:25:19
* @param array $array 二维数组
* @param int $superior_id 上级ID
* @param string $superior_key 父级键名
* @param string $primary_key 主键名
* @param string $son_key 子级键名
* @return array
* */
function tree(array $array, $superior_id = 0, $superior_key = 'superior_id', $primary_key = 'cate_id', $son_key = 'son') :array
{
$return = [];
foreach ($array as $k => $v) {
if ($v[$superior_key] == $superior_id) {
$son = tree($array, $v[$primary_key], $superior_key, $primary_key, $son_key);
if ($son) $v[$son_key] = $son;
$return[] = $v;
}
}
return $return;
}
}
树形结构转为二维数组
if (!function_exists('un_tree')) {
/**
* 树形结构 转为 二维数组
* @author super
* @time 2020-12-22 10:35:19
* @param array $array 树形数据
* @param string $son_key 子级的键名
* @param int $times 层级
* @return array
* */
function un_tree(array $array, $son_key = 'son', $times = 0) :array
{
$return = [];
$times += 1;
if (!empty($array)) {
foreach ($array as $key => $value) {
$son = isset($value[$son_key]) ? $value[$son_key] : '';
if ($son) unset($value[$son_key]);
$value['times'] = $times;
array_push($return, $value);
if ($son) $return = array_merge($return, un_tree($son, $son_key, $times));
}
}
return $return;
}
}
0 条讨论