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

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-06 19:39:451263Durchsuche

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn