無限極分類,遞歸分類


有一組數組如下:

<?php
$items = array(
    1 => array('id' => 1, 'pid' => 0, 'name' => '江西省'),
    2 => array('id' => 2, 'pid' => 0, 'name' => '黑龍江省'),
    3 => array('id' => 3, 'pid' => 1, 'name' => '南昌市'),
    4 => array('id' => 4, 'pid' => 2, 'name' => '哈爾濱市'),
    5 => array('id' => 5, 'pid' => 2, 'name' => '雞西市'),
    6 => array('id' => 6, 'pid' => 4, 'name' => '香坊區'),
    7 => array('id' => 7, 'pid' => 4, 'name' => '南崗區'),
    8 => array('id' => 8, 'pid' => 6, 'name' => '和興路'),
    9 => array('id' => 9, 'pid' => 7, 'name' => '西大直街'),
    10 => array('id' => 10, 'pid' => 8, 'name' => '東北林業大學'),
    11 => array('id' => 11, 'pid' => 9, 'name' => '哈爾濱工業大學'),
    12 => array('id' => 12, 'pid' => 8, 'name' => '哈爾濱師范大學'),
    13 => array('id' => 13, 'pid' => 1, 'name' => '贛州市'),
    14 => array('id' => 14, 'pid' => 13, 'name' => '贛縣'),
    15 => array('id' => 15, 'pid' => 13, 'name' => '於都縣'),
    16 => array('id' => 16, 'pid' => 14, 'name' => '茅店鎮'),
    17 => array('id' => 17, 'pid' => 14, 'name' => '大田鄉'),
    18 => array('id' => 18, 'pid' => 16, 'name' => '義源村'),
    19 => array('id' => 19, 'pid' => 16, 'name' => '上壩村'),
);?>

常見遞歸方法:

<?php
function getTree($arr,$parent_id){
    $tree = [];
    foreach ($arr as $k=>$v){
        if ($v['pid'] == $parent_id){
            $v['son'] = $this->getTree($arr,$v['id']);
            if ($v['son'] == null){
                unset($v['son']);
            }
            $tree[] = $v;
        }
    }
    return $tree;
}
?>

 

某開源網站方法:

A方法:

<?php
function genTree5($items) {
    foreach ($items as $item)
        $items[$item['pid']]['son'][$item['id']] = &$items[$item['id']];
    return isset($items[0]['son']) ? $items[0]['son'] : array();
}?>

 

B方法:

<?php/**
 * 將數據格式化成樹形結構
 * @author Xuefen.Tong
 * @param array $items
 * @return array
 */
function genTree9($items) {
    $tree = array(); //格式化好的樹
    foreach ($items as $item)
        if (isset($items[$item['pid']]))
            $items[$item['pid']]['son'][] = &$items[$item['id']];
        else
            $tree[] = &$items[$item['id']];
    return $tree;
}?>

 

以上就是這次的全部內容!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM