注意:我不熟悉有关树结构的术语。请原谅任何可能是我无知造成的疏忽!
实际示例
给定这样的数组:
Array
(
[0] => 0
[1] => 2
[2] => 8
[3] => 9
)
具有关键字"的树节点;9〃;将在CCD_ 1处找到(其中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
函数只是递归地找到父节点,并将其保存为上面找到的数组格式。如果有更好的方法来表示所述数据(尤其是如果它解决了我的问题),那就更好了。
编辑:在通读中,这个问题似乎不是关于树,而是关于如何访问一个数组(给定其在单独数组中的结构)。这样标记。
创建一个自定位函数。这应该做技巧(未经测试)
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);