首页 > php教程 > php手册 > 递归获取二维数组后代、删除后代

递归获取二维数组后代、删除后代

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-06-06 19:39:45
原创
1270 人浏览过

递归获取二维数组后代、删除后代。 #数据少的时候还好用 #不晓得非递归代码怎么写,在这里求非递归写法 /** * 获取后代 * @param array $arr 需要操作的二维数组 * @param int $id 需要获取的编号 * @param string $idkey 唯一编号字段 * @param string $pid

递归获取二维数组后代、删除后代。
#数据少的时候还好用
#不晓得非递归代码怎么写,在这里求非递归写法

/**
 * 获取后代
 * @param array $arr 需要操作的二维数组
 * @param int $id 需要获取的编号
 * @param string $idkey 唯一编号字段
 * @param string $pidkey 父编号字段
 * @param int $self 是否包含自身
 * @return array
 */


function getChilds($arr,$id,$idkey,$pidkey,$self = 0){
	$c = array();
	foreach ($arr as $k => $value){
		if($self && $value[$idkey] == $id){
			$c[] = $value;
			$self = 0;
		}
		if($value[$pidkey] == $id){
			$c[] = $value;
			$c = array_merge($c,getChilds($arr,$value[$idkey],$idkey,$pidkey,0));
		}

	}
	return $c;
}

/**
 * 移除后代
 * @param array $arr 需要操作的二维数组
 * @param int $id 需要移除的编号
 * @param string $idkey 唯一编号字段
 * @param string $pidkey 父编号字段
 * @param int $self 是否移除自身
 * @param int $array_values 是否重新索引数组
 * @return array
 */
function removeChilds($arr,$id,$idkey,$pidkey,$self = 0,$array_values = 0){
	$c = getChilds($arr, $id, $idkey, $pidkey,$self);
	foreach ($c as $o){
		foreach ($arr as $k => $v){
			if($o[$idkey] == $v[$idkey]){
				unset($arr[$k]);
				break;
			}
		}
	}
	return $array_values ? array_values($arr) : $arr;
}
登录后复制

相关标签:
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
php递归疑惑?
来自于 1970-01-01 08:00:00
0
0
0
javascript - 关于json数组递归的问题
来自于 1970-01-01 08:00:00
0
0
0
php做仿微博评论回复功能(递归思路)
来自于 1970-01-01 08:00:00
0
0
0
Vue.js 3中的单文件组件中的递归
来自于 1970-01-01 08:00:00
0
0
0
javascript - 递归算法问题.
来自于 1970-01-01 08:00:00
0
0
0
热门推荐
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板