首页 > 编程语言 >php 获取父级分类id下全部的子级id

php 获取父级分类id下全部的子级id

时间:2024-02-02 13:33:07浏览次数:27  
标签:cate 父级 ids id 子级 array children result

    public static function getCateIds()
    {
        //获取商品分类id
        $where = [
            ['is_disable', '=', 0],
            ['is_delete', '=', 0],
        ];
        $cate = self::field('id,pid,category,pricing_unit')->where($where)->select()->toArray();
        $cate = array_column($cate, null, 'id');
        $cate_ids = self::getResult($cate);
        unset($cate_ids[0]);
        foreach ($cate as  $v) {
            if ($v['pid'] != 0) {
                unset($cate_ids[$v['id']]);
            }else{
                if (!empty($cate_ids[$v['id']])) {
                    array_unshift($cate_ids[$v['id']], $v['id']);
                }else{
                    $cate_ids[$v['id']][] = $v['id'];
                }
            }
        }
        return $cate_ids;
    }


    public static  function getResult($categories){
        $result = [];
        // 遍历分类数组
        foreach ($categories as $category) {
            $parentId = $category['pid'];
            $categoryId = $category['id'];

            if (!isset($result[$parentId])) {
                $result[$parentId] = array();
            }
            $result[$parentId][] = $categoryId;
        }

        foreach ($result as $parentId => &$children) {
            $descendants = array();
            foreach ($children as $childId) {
                $descendants = array_merge($descendants, self::getChildren($childId,
                    $result));
            }
            $children = array_unique(array_merge($children, $descendants));
        }

        return $result;
    }


    public static function getChildren($categoryId, $categories) {
        $children = array();

        if (isset($categories[$categoryId])) {
            foreach ($categories[$categoryId] as $childId) {
                $children[] = $childId;
                $children = array_merge($children, self::getChildren($childId,
                    $categories));
            }
        }

        return $children;
    }

返回格式

 

标签:cate,父级,ids,id,子级,array,children,result
From: https://www.cnblogs.com/bkhdd/p/18003031

相关文章

  • [LeetCode] 2966. Divide Array Into Arrays With Max Difference
    Youaregivenanintegerarraynumsofsizenandapositiveintegerk.Dividethearrayintooneormorearraysofsize3satisfyingthefollowingconditions:Eachelementofnumsshouldbeinexactlyonearray.Thedifferencebetweenanytwoelementsin......
  • docker安装TIDB
    1、添加docker-compose.ymlversion:'2'networks:tidb_net:driver:bridgeipam:driver:defaultconfig:-subnet:192.168.88.0/24gateway:192.168.88.1services:pd0:image:pingcap/pd:latestpor......
  • 什么是电源模块效率 如何计算 提高效率的方法 BOSHIDA博士达
    什么是电源模块效率如何计算提高效率的方法BOSHIDA博士达电源模块效率是指输入电能转换为输出电能的比例,通常以百分比表示。高效率的电源模块能够最大限度地将输入电能转化为有用的输出电能,减少能量的损耗和浪费。以下是与电源模块效率相关的一些知识点:效率公式:电源模块的效率......
  • 学习unigui unidbgrid的GridsGroupingSorting【18】
    折腾一天,你不按照demo里的代码来,就是没有效果。procedureTUniGridsGroupingSorting.UniDBGrid1MultiColumnSort(Columns:TUniDBGridColumnArr;Directions:TUniSortDirections);varOrderStr:string;I:Integer;beginUniMainModule.ADOQuery5.Close;//必须在......
  • 36.solidworks异形孔向导Toolbox文件丢失解决
    1.提示如下问题2.使用Everything_x64搜索电脑上的swbrowser.sldedb文件,得到文件所在位置    3.将文件所在位置 C:\SOLIDWORKSData\lang\english\,去掉后面的内容C:\SOLIDWORKSData,输入下面框内,点击配置,然后确认,注意多试几次4.完成 ......
  • 10000+AI绘画关键词-涵盖Mid和StableDiffusion
    下载地址:https://pan.quark.cn/s/90634ffdf31910000+AI绘画关键词-涵盖Mid和StableDiffusion......
  • Android系统开发之TextView跑马灯效果导致系统卡的惨案
    问题描述:客户反馈投诉说:低端设备上,在桌面时,当音乐名过长时,音乐名称就会有一个跑马灯动态效果,此时调节设备的音量,设备极其的卡,音量调节界面会晚将近10秒才显示。但是如果音乐名不长可以正常显示时,音乐名称就不会有跑马灯动态效果,此时调节设备的音量,设备正常,音量调节界面也不会慢显示......
  • List<ParamItem> lists,里如何查找里面id=3行,所在的value
    如果你有一个名为lists的List<ParamItem>,并且想要查找其中id为3的行,并获取对应的value值,可以使用Java8引入的StreamAPI来实现。下面是一个示例代码:importjava.util.List;importjava.util.Optional;publicclassMain{publicstaticvoidmain(String[......
  • Android系统中/system/priv-app/和/system/app/以及/system_ext/app/的区别
    在Android系统中,这三个目录都是与应用程序相关的,但它们在系统中的位置和用途上有一些区别。/system/priv-app/目录:该目录包含被认为是系统的一部分的特权应用程序(privilegedapps)。特权应用程序通常是由设备制造商或ROM开发者预先安装的,它们在系统中运行时具有更高的权限。......
  • STM32CubeMX教程31 USB_DEVICE - HID外设_模拟键盘或鼠标
    1、准备材料正点原子stm32f407探索者开发板V2.4STM32CubeMX软件(Version6.10.0)keilµVision5IDE(MDK-Arm)ST-LINK/V2驱动野火DAP仿真器XCOMV2.6串口助手2、实验目标使用STM32CubeMX软件配置STM32F407开发板USB_OTG_FS为工作在HumanInterfaceDeviceClass(HID)(人机接口......