Ignore:
Timestamp:
2013/02/28 09:30:36 (9 years ago)
Author:
pineray
Message:

#2166 カテゴリーツリーのデータをツリー状に取得

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_12-dev/data/class/util/SC_Utils.php

    r22567 r22586  
    19221922        return $return; 
    19231923    } 
     1924 
     1925    /** 
     1926     *  
     1927     * @param string $primary_key 
     1928     * @param string $glue_key 
     1929     * @param integer $max_depth 
     1930     * @param array $correction 
     1931     * @param integer $base_id 
     1932     * @return array ツリーの配列 
     1933     */ 
     1934    public static function buildTree($primary_key, $glue_key, $max_depth, $correction = array(), $base_id = 0) 
     1935    { 
     1936        $children = array(); 
     1937        foreach ($correction as $child) { 
     1938            $children[$child[$glue_key]][] = $child; 
     1939        } 
     1940        $arrTree = $children[$base_id]; 
     1941        foreach ($arrTree as &$child) { 
     1942            SC_Utils_Ex::addChild($child, $primary_key, 1, $max_depth, $children); 
     1943        } 
     1944        return $arrTree; 
     1945    } 
     1946 
     1947    /** 
     1948     * ツリーの親子をつなげるルーチン. 
     1949     *  
     1950     * @param array $target 親 
     1951     * @param string $primary_key 主キーの識別子 
     1952     * @param integer $level 親の階層 
     1953     * @param integer $max_depth 階層の深さの最大値 
     1954     * @param array $children 子の配列(キーが親ID) 
     1955     * @return void 
     1956     */ 
     1957    public static function addChild(&$target, $primary_key, $level, $max_depth, &$children = array()) 
     1958    { 
     1959        if (isset($children[$target[$primary_key]])) { 
     1960            $target['children'] = $children[$target[$primary_key]]; 
     1961            if ($level + 1 < $max_depth) { 
     1962                foreach ($target['children'] as &$child) { 
     1963                    SC_Utils_Ex::addChild($child, $primary_key, $level++, $max_depth, $children); 
     1964                } 
     1965            } 
     1966        } 
     1967    } 
    19241968} 
Note: See TracChangeset for help on using the changeset viewer.