php读取分类 生成二维数组 二维数组值重复

发布于 2022-09-03 14:43:50 字数 485 浏览 33 评论 0

读取分类目录 生成顶级分类下包含顶级下的其他分类的二维数组
但是下一个顶级分类目录下的二维数组会包含上一个顶级的的值 好像是static申明变量的原因 但是不知道怎么改 释放了也一样 下面是截图 求一个原因:
图片描述

图片描述

图片描述

图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

荒人说梦 2022-09-10 14:43:50

重新找了下,下面这个应该能符合要求。

<?php


$arr= array(
                '1'=>array('id'=>1, 'pid'=>0,),
                '2'=>array('id'=>2, 'pid'=>0,),
                '3'=>array('id'=>3, 'pid'=>1,),
                '4'=>array('id'=>4, 'pid'=>2,),
                '5'=>array('id'=>5, 'pid'=>4),
                '6'=>array('id'=>6, 'pid'=>5,),
                '7'=>array('id'=>7, 'pid'=>3),
                '8'=>array('id'=>8, 'pid'=>4,),
                '9'=>array('id'=>9, 'pid'=>7),
        );


//以ID为键值格式化
foreach ($arr as $key => $value) {
    $list[$value['id']]=$value;
}

//遍历数组
foreach ($list as $key => $value) {
    if($value['pid']==0){
        $tree[$value['id']]=$value;

    }else{
        //祖先ID
        $ancestor_id='';
        //判断祖先数组里面有没有对应的值,有则取出
        if(!empty($ancestor[$value['pid']])){
            $ancestor_id=$ancestor[$value['pid']];

        }else{
        
            $topid=$value['id'];
            $child=array();
            if(empty($ancestor[$topid])){
                $child[]=$topid;
            }
            //通过循环,一层一层的往上找,找出他们各自的父亲,直到祖宗为止
            while($list[$topid]['pid'] > 0)
            {
                
                    
                    $topid = $list[$topid]['pid'];    

                    if(empty($topid)){
                        $topid='';
                        break;

                    }else{

                        //祖宗数组里面没有,则放入子孙数组
                        if(empty($ancestor[$topid])){
                            $child[]=$topid;
                        }else{
                            //祖先已经存在,就不用循环下去了
                            $topid=$ancestor[$topid];
                            break;

                        }
                        
                    }
            
                    
            }
        
            $ancestor_id= $topid;
            //如果找到祖宗,就将子孙数组对应加入到祖宗数组里面
            if(!empty($ancestor_id)){
                foreach ($child as $k => $v) {
                    $ancestor[$v]=$ancestor_id;
                }
                

            }
            
        }
        if(!empty($ancestor_id)){
            $tree[$ancestor_id]['child'][$value['id']]=$value;

        }


        
    }


    
}
echo '<pre>';
var_dump($tree);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文