为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
元芳怎么了 2023-06-24 15:51:18
我想要子节点的所有父节点的列表。我正在搜索,但我正在获取父节点的所有子节点。我的数组看起来像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));我想要的输出是,我给输入子节点 Id ,它将返回所有父节点。例如,我将给孩子 ID“raja”,它将给出输出 1) manish 2) vijay 3) admin。
查看完整描述

2 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

看看这个例子,让我知道这是否是您正在寻找的。


<?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

)

您可以使用递归,以便它可以使用到任何级别。无需限制级别。


查看完整回答
反对 回复 2023-06-24
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

    find_parents($arr, $val['parent']);

在上面的行中,递归参数中的 $arr 应该是 $input 数组变量。


查看完整回答
反对 回复 2023-06-24
  • 2 回答
  • 0 关注
  • 231 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信