>  기사  >  백엔드 개발  >  html - PHP는 분류를 읽고 2차원 배열 값이 반복되도록 생성합니다.

html - PHP는 분류를 읽고 2차원 배열 값이 반복되도록 생성합니다.

WBOY
WBOY원래의
2016-09-11 11:34:121008검색

카테고리 디렉토리를 읽어 최상위 카테고리 아래에 다른 카테고리를 포함하는 2차원 배열을 생성합니다.
그러나 다음 최상위 카테고리 디렉토리 아래의 2차원 배열에는 이전 카테고리의 값이 포함됩니다. 최상위 디렉토리입니다. 변수를 정적 선언하는 이유인 것 같습니다. 하지만 릴리스를 변경하는 방법을 모르고 이유를 묻는 스크린샷은 다음과 같습니다.
html - PHP는 분류를 읽고 2차원 배열 값이 반복되도록 생성합니다.

이미지 설명

html - PHP는 분류를 읽고 2차원 배열 값이 반복되도록 생성합니다.

html - PHP는 분류를 읽고 2차원 배열 값이 반복되도록 생성합니다.

답글 내용:

카테고리 디렉토리를 읽어 최상위 카테고리 아래에 다른 카테고리를 포함하는 2차원 배열을 생성합니다.
그러나 다음 최상위 카테고리 디렉토리 아래의 2차원 배열에는 이전 카테고리의 값이 포함됩니다. 최상위 디렉토리입니다. 변수를 정적 선언하는 이유인 것 같습니다. 하지만 릴리스를 변경하는 방법을 모르겠는데 이유를 묻는 스크린샷은 다음과 같습니다.
html - PHP는 분류를 읽고 2차원 배열 값이 반복되도록 생성합니다.

이미지 설명

html - PHP는 분류를 읽고 2차원 배열 값이 반복되도록 생성합니다.

html - PHP는 분류를 읽고 2차원 배열 값이 반복되도록 생성합니다.

다시 검색해 보면 다음 요건을 충족해야 합니다.

<code><?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 class="brush:php;toolbar:false">';
var_dump($tree);

</code>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.