给定对应于叶节点位置的值数组,我将如何访问所述节点?

时间:2012-01-20 14:19:45

标签: php arrays multidimensional-array tree tree-nodes

注意:我不熟悉有关树结构的术语。请原谅我无知可能造成的任何疏忽!

实践例子

给定一个数组:

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函数只是递归地找到父节点,并将其保存为上面找到的数组格式。如果有更好的方式来表示所述数据(特别是如果它解决了我的问题),那就更好了。

编辑:在阅读中,似乎这个问题不是关于树,而是如何在一个单独的数组中给定其结构来访问数组。标记为。

1 个答案:

答案 0 :(得分: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);