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 回答