php树获取子节点的所有父节点的列表

时间:2020-06-20 17:10:51

标签: php

我想要一个子节点的所有父节点的列表。我正在搜索,但正在获取父级的所有子节点。 我的数组看起来像

array(
array('id' => 1, 'parent' => 0),
array('id' => 2, 'parent' => 0),
array('id' => 3, 'parent' => 0),
array('id' => 4, 'parent' => 1),
array('id' => 5, 'parent' => 4),
array('id' => 6, 'parent' => 5));

enter image description here

我想要的输出是,我给输入子节点ID,它将返回所有父节点。例如,我给孩子ID“ raja”,然后给输出1)manish 2)vijay 3)admin。

1 个答案:

答案 0 :(得分:3)

看看这个例子,让我知道这是否是您想要的。

<?php 
$arr = array(
    array('id' => 1, 'parent' => 0),
    array('id' => 2, 'parent' => 0),
    array('id' => 3, 'parent' => 0),
    array('id' => 4, 'parent' => 1),
    array('id' => 5, 'parent' => 4),
    array('id' => 6, 'parent' => 5));

$parents = [];
function find_parents($input, $id) {
    global $parents, $arr;
    if(is_array($input)) {
        foreach($input as $k => $val) {
           
            if($val['id'] == $id  && $val['parent'] != 0) {
                array_push($parents, $val['parent']);
                find_parents($arr, $val['parent']);
            }
        }
    }
}
find_parents($arr, 6);
print_r($parents);

输入6作为输入

Array
(
    [0] => 5
    [1] => 4
    [2] => 1
)

您可以使用递归,以便可以在任何级别上使用它。无需限制水平。