php 关于递归回调的问题

每天进步一点点e 每天进步一点点e 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
有一个会员数组 16的上级为13,13的上级为1,17 的上级为13, 找16,17 的关系链,找到1为止,想到一个递归的方法,但是实现起来达不到理想的效果,大家有更好的方法吗?,数组大小长短是不确定的


error_reporting(0);
//会员递归得到层级关系
function user_tier($arr,$k){
static $return_arr;
if($arr[$k]!=1){
$return_arr[$k] = $arr[$k];
user_tier($arr,$arr[$k]);
}else{
$return_arr[$k] = $arr[$k];
}
return $return_arr;
}


$test = array(
array('id'=>16,'pid'=>13),
array('id'=>13,'pid'=>1),
array('id'=>17,'pid'=>13)
);

$test3 = array();
foreach($test as $k=>$v){
$test3[$v['id']] = $v['pid'];
}
$test2 = array(16,17);



foreach($test2 as $k=>$v){
$guanxi[] = user_tier($test3,$v);
}

/*
得到效果如下
[0] => Array
(
[16] => 13
[13] => 1
)

[1] => Array
(
[16] => 13
[13] => 1
[17] => 13
)


目标效果
[0] => Array
(
[16] => 13
[13] => 1
)

[1] => Array
(
[17] => 13
[13] => 1

)
*/





...全文
评论 4
收藏 已收藏
分享
返回顶部
每天进步一点点e
基础编程 21,889 成员 140,329 内容