当前位置:Gxlcms > PHP教程 > html-php读取分类生成二维数组二维数组值重复

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

时间:2021-07-01 10:21:17 帮助过:8人阅读

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

图片描述

回复内容:

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

图片描述

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

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 '
';
var_dump($tree);

人气教程排行