html - php讀取分類 產生二維數組 二維數組值重複

來源:互聯網
上載者:User

讀取分類目錄 產生頂級分類下包含頂級下的其他分類的二維數組
但是下一個頂級分類目錄下的二維數組會包含上一個頂級的的值 好像是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);
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.