递归逆序输出数组java_在数组中反向递归以查找父ID

试图找出一种获取多维数组中项的父ID的方法:

$Arr = array(

array(

"Id" => 1,

"Parent" => 0,

"Children" => array(

array(

"Id" => 2,

"Parent" => 1,

"Children" => array(),

),

array(

"Id" => 3,

"Parent" => 1,

"Children" => array(

array(

"Id" => 4,

"Parent" => 3,

"Children" => array(),

),

),

),

),

),

array(

"Id" => 5,

"Parent" => 0,

"Children" => array(

array(

"Id" => 6,

"Parent" => 5,

"Children" => array(),

),

),

)

);

我需要获得“父”= 0的顶部元素的“Id” . 对于具有Id 4的项目,它应该返回1作为结果,或者搜索6将返回5.我已经尝试了各种递归函数的方法,但只有在深度为2时才设法获得正确的结果 .

我找到了这个函数,但它似乎返回键的名称而不是值:

function find_parent($array, $needle, $parent = null) {

foreach ($array as $key => $value) {

if (is_array($value)) {

$pass = $parent;

if (is_string($key)) {

$pass = $key;

}

$found = find_parent($value, $needle, $pass);

if ($found !== false) {

return $found;

}

} else if ($key === 'Id' && $value === $needle) {

return $parent;

}

}

return false;

}

编辑

以下仅适用于第1级/深度:

function GetParent($Data = array(), $Needle = 0){

foreach($Data as $Key => $Item){

if($Item['Id'] === $Needle && $Item['Parent'] == 0){

return $Item['Id'];

}

if(sizeof($Item['Children']) !== 0)

GetParent($Item['Children'], $Item['Parent']);

}

return false;

}

我不明白我做错了什么 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值