前言
有时候在项目开发的过程中会遇到查询层级树某一个节点下的所有子级节点的问题,这里记录一种递归算法,快速获取所有的子级节点数据到一个一维数组中。
代码如下:
/**
* 按照递归无限级分类【先序遍历算】,获取任意节点下所有子节点id
* @param array $data 列表所有数据
* @param int $pid 所属父级节点
* @return array $childrenId_data 子级节点id
*/
function getChildId($data, $pid = 0)
{
static $childrenId_data = array();
if (empty($data)) {
return [];
}
foreach ($data as $key => $val) {
if ($val['pid'] == $pid) {
$childrenId_data[] = $val['id'];
unset($data[$key]);
getChildId($data, $val['id']);
}
}
return $childrenId_data;
}