0

私はユーザーの配列を持っており、すべてのユーザーは親を持つことができます:

array(6) {
    guest => NULL
    moderator => NULL
    member => array(1) [ //username
       0 => "guest" (5) //parent
    ]
    user => array(1) [
       0 => "member" (6)
    ]
    admin => array(1) [
       0 => "moderator" (9)
    ]
}

そして、このデータからツリービューを作りたいです。結果は次のようになります: http://www.phorum.org/phorum5/file.php/62/3237/treeview_lightweight_admin_screenshot.jpg

結果は次のようになります。

- guest
    - member
        - user

- moderator
    - admin

編集:

ツリー ジェネレーターを作成しようとしましたが、再帰の使用方法がわかりません。

private function generateTree($node)
{
    $return = array();
    if(is_array($node))
    {
        foreach($node as $user => $parents)
        {
            if(is_null($parents))
            {
                $return[$user] = null;
            }
            if(is_array($parents))
            {
                foreach($parents as $parent)
                {
                    if(array_key_exists($parent, $return))
                    {
                        $return[$parent] = $user;
                    }
                    else
                    {
                        dump($user, $parent);
                    }
                }
            }
        }
    }
    return $return;
}

戻る:

array(2) {
    guest => "member" (6)
    moderator => "admin" (5)
}

左:

    user => array(1) [
        0 => "member" (6)
    ]
4

2 に答える 2

1

これを有効にするには、HTML ビルダー メソッドをrecursiveにします。基本的に、このメソッドは、最終レベルに到達するまでレベル変数 (レベル 1、2、3、4..) をインクリメントして自身を呼び出します。レベルに応じて、すべてのレベルが HTML コードに貢献します。典型的な例は次のとおりです。

function render($treeData, &$html, $level = 0) {
    foreach ($treeData->branches as $branch) {
        render($branch, $level + 1);
    }

    $html .= '<div class="section-level-'.$level.'">'.$treeData->currentLevelData.'</div>';
}

$html = '';
render($treeData, $html);

もちろん、これは疑似コードです。:)

于 2012-07-13T13:10:04.200 に答える
0

デバッグする場合は、var_dump($array)(HTML レンダリング用) またはprint_r($array)(プレーン テキスト レンダリング用) を使用した自動ビューがいくつかあります。カスタム ビューの場合は、配列をループして独自の HTML を記述する必要があります。

于 2012-07-13T13:03:08.957 に答える