0

注: ツリー構造に関する用語に慣れていません。私の無知による見落としがあるかもしれませんが、ご容赦ください!

実践例

配列が与えられた場合:

Array
(
    [0] => 0
    [1] => 2
    [2] => 8
    [3] => 9
)

キー「9」を持つツリー ノードは$tree[2][8][9](0 がルート) にあります。上記の配列が与えられた場合、葉ノードにアクセスするステートメントを PHP でどのように作成すればよいでしょうか?

ターゲットコード

/*
    Let's say I am given a $leafNodeID of 9, and I'd like to save some
    data ($dataToSave) into said leaf node
*/
$leafNodeID = 9;
$dataToSave = array("name" => "foobar");
$tree_path = $this->findPathToRootNode($tree, $leafNodeID);    // This returns the array found above.
${?????} = $dataToSave;     // <-- Here be dragons

前もって感謝します!

編集:不思議に思っている人のために、私のfindPathToRootNode関数は親ノードを再帰的に見つけて、上記の配列形式で保存します。上記のデータを表現するためのより良い方法があれば(特にそれが私の問題を解決する場合)、それはさらに良いでしょう。

編集:読んでみると、この質問はツリーに関するものではなく、別の配列の構造を考慮して配列にアクセスする方法のようです。そのままタグ付け。

4

1 に答える 1

0

セルフターゲティング機能を作ります。これでうまくいくはずです(未テスト)

function getLeaf($tree, $targetleaf, $depth = 0){
    if (isset($targetleaf[$depth+1])
        return getLeaf($tree[$targetleaf[$depth]], $targetleaf, $depth + 1)
    else
        return $tree[$depth];
}

$treeデータであり$tree、配列へのパスであり、$depthそれ自体が語ります。

で関数を呼び出します

$leaf = getLeaf($tree,$targetleaf);
于 2012-01-20T14:26:39.477 に答える