ツリーデータ操作

クラスツリー
{
    / * *
     *再帰的なデータ
     * @paramの$データ
     * @param int型$ ID
     * @param int型の$レベル
     * @param配列
     * @return配列
     * @date 2018年10月24日午前15時40分34秒
     * / 
    パブリック 静的 関数再帰($データ$番号 = 0、$レベル = 1 
    {
        $リターン = [];
        foreachの$データ として $ valの){
             場合$ヴァル [ 'PID'] == $番号){
                 $ヴァル [ 'レベル'] = $レベル$返す [] = $ valの;
                $リターン = array_merge$戻り静的 ::再帰($データ$ヴァル [ 'ID']、$レベル + 1 ))。
            }
        }
        返す 返さ$ ;
    }
 
    / * *
     *親の子ノード
     * @paramの配列$データ
     * @param int型$ PID
     * @Paramの配列$結果暫定結果
     * @return配列
     * @date 2018年10月24日夜三時45分44秒
     * / 
    パブリック 静的 関数ファミリ($データ$ pidを$結果 = [])
    {
        foreachの$データ として $ valの){
             場合$ヴァル [ 'ID'] == $のPID ){
                 $結果 [] = $ valの;
                返す 静的 ::家族($データ$ valの [ 'PID']、$結果);
            }
        }
        戻り ます$ result ;
    }
 
    / * *
     *クエリ分類サブクラス
     * @paramの配列$データ
     * @param int型$ ID
     * @return配列
     * @date 2018年10月24日午後四時44分18秒
     * / 
    パブリック 静的 関数 findSon($データ$のID = 0 
    {
        $息子 = [];
        foreachの$データ として $ valの){
             場合$ヴァル [ 'PID'] == $ ID ){
                 $息子 [] = $ valの;
            }
        }
        返す $息子を
    }
 
    / * *
     *ファミリーツリー
     * @paramの$データ
     * @paramの$のID
     * @return配列
     * @date 2018年10月24日夜04時18分38秒
     * / 
    パブリック 静的 関数 familyTree($データ$のID = 0 
    {
        $データ = 静的 ::再帰($データ$のID );
        返す 静的 ::サブツリー($データ)。
    }
 
    / * *
     *無制限のレベルのネストされたツリー
     * @paramの$データ
     * @param int型の$レベル
     * @param int型$ ID
     * @return配列
     * @date 2018年10月25日午前10時59分16秒
     * / 
    パブリック 静的 関数サブツリー($データ$レベル = 1、$番号 = 0 
    {
        $ RET = [];
        foreachの$データ として $キー => $ valの){
             場合$ヴァル [ 'レベル'] == $レベル && $ヴァル [ 'PID'] == $番号){
                 $データ [ $キー ] [ '子ども] = 静的 ::サブツリー($データ$レベル +1、$ヴァル [ 'ID' ])。
                もし$データ [ $キー ] [ '子供])){
                     解除$データ [ $キー ] [ '子供]);
                }
                $ RET [] = $データ [ $キー];
            }
        }
        返す $権利を
    }
}

 

おすすめ

転載: www.cnblogs.com/2019PawN/p/11717433.html