如何递归获取二维数组所有后代并删除其所有后代?

更新于
2026-08-15 03:39:45
8阅读来源:SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计280个文字,预计阅读时间需要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; }

本文共计280个文字,预计阅读时间需要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; }