不用遞推實現無限極分類

php_yt發表於2021-04-14

適用於 id,pid,name 的表結構。

原理 php引用。

直接上程式碼:

public  function getTree($arr)
{
    $items = [];
    foreach ($arr as $v)
    {
      $items[ $v['id'] ] = $v;
    }

    $tree = [];
    foreach ($items as $item)
    {

      if( isset($items[$item['pid']]) ){

        $items[ $item['pid'] ]['children'][] = &$items[$item['id']];

      }else{

        $tree[] = &$items[$item['id']];

      }

    }

    return $tree;
}

資料格式:

Array
(
    [0] => Array
        (
            [id] => 114
            [name] => 一級分類
            [pid] => 0
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 125
                            [name] => 二級分類
                            [pid] => 114
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 171
                                            [name] => 三級分類
                                            [pid] => 125
                                        )
                                )
                        )
                    [1] => Array
                        (
                            [id] => 126
                            [name] => 二級分類
                            [pid] => 114
                        )
                )

        )

    [1] => Array
    (
        ...省略
    )

    ...省略
)
本作品採用《CC 協議》,轉載必須註明作者和本文連結
focus

相關文章