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

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2016-06-06 19:39:45
Original
1264 people have browsed it

递归获取二维数组后代、删除后代。 #数据少的时候还好用 #不晓得非递归代码怎么写,在这里求非递归写法 /** * 获取后代 * @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;
}
Copy after login

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template