如何递归地获取并删除二维数组的所有后代元素?

更新于
2026-09-26 06:38:54
2阅读来源:SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计274个文字,预计阅读时间需要2分钟。

如何递归地获取并删除二维数组的所有后代元素?

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

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

/** * 获取后代 * @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; }

如何递归地获取并删除二维数组的所有后代元素?

本文共计274个文字,预计阅读时间需要2分钟。

如何递归地获取并删除二维数组的所有后代元素?

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

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

/** * 获取后代 * @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; }

如何递归地获取并删除二维数组的所有后代元素?