早睡早起,方能养生
Sleep early rise early, way to keep healthy

PHP二维数组转树形,树形转二维数组

super
2020-12-22 14:42
views 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 条讨论
top