【PHP】PHP实现无限级树形分类 树形分类 如果子集的pid不是空,父级id不存在,则子集不展示

【PHP】PHP实现无限级树形分类 树形分类 如果子集的pid不是空,父级id不存在,则子集不展示

小破孩
2025-05-07 / 0 评论 / 19 阅读 / 正在检测是否收录...
/**
     * @Author:小破孩
     * @Email:3584685883@qq.com
     * @Time:2024/12/17 22:27
     * @param $arr
     * @param $id
     * @param $pid
     * @return array
     * @Description:树形分类 如果子集的pid不是空,父级id不存在,则子集不展示
     */
    public function getTreeByDateDelChile($arr,$id,$pid) {
        $items = [];
        foreach($arr as $v){
            $items[$v[$id]] = $v;
        }
        $tree = [];
        foreach($items as $k => $item){
            if($item[$pid] &&!isset($items[$item[$pid]])){
                unset($items[$k]);
                continue;
            }
            if(isset($items[$item[$pid]])){
                $items[$item[$pid]]['child'][] = &$items[$k];
            }else{
                $tree[] = &$items[$k];
            }
        }
        return $tree;
    }

    /**
     * @Author:小破孩
     * @Email:3584685883@qq.com
     * @Time:2024/9/14 16:59
     * @param array $arr
     * @param string $children
     * @return array
     * @Description:将树形数组转换成一维数组
     */
    public function setManyTosingle(array $arr = [], string $children = 'child'): array {
        $result = [];
        foreach ($arr as $item) {
            // 先将当前节点添加到结果数组中
            $newItem = $item;
            if (isset($newItem[$children])) {
                unset($newItem[$children]);
            }
            $result[] = $newItem;
            // 递归处理子节点
            if (isset($item[$children]) && is_array($item[$children])) {
                $result = array_merge($result, $this->setManyTosingle($item[$children], $children));
            }
        }
        return $result;
    }
0

评论 (0)

取消