注意:我不熟悉有关树结构的术语。请原谅我无知可能造成的任何疏忽!
给定一个数组:
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
函数只是递归地找到父节点,并将其保存为上面找到的数组格式。如果有更好的方式来表示所述数据(特别是如果它解决了我的问题),那就更好了。
编辑:在阅读中,似乎这个问题不是关于树,而是如何在一个单独的数组中给定其结构来访问数组。标记为。
答案 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);