递归获取所有的子分类的ID
$data = [
['id' => '1', 'pid' => '0', 'dsp' => '1'],
['id' => '2', 'pid' => '0', 'dsp' => '2'],
['id' => '3', 'pid' => '0', 'dsp' => '3'],
['id' => '4', 'pid' => '1', 'dsp' => '1-4'],
['id' => '5', 'pid' => '4', 'dsp' => '1-4-5'],
['id' => '6', 'pid' => '5', 'dsp' => '1-4-5-6'],
['id' => '7', 'pid' => '3', 'dsp' => '3-7'],
['id' => '8', 'pid' => '2', 'dsp' => '2-8'],
['id' => '9', 'pid' => '1', 'dsp' => '1-9'],
['id' => '10', 'pid' => '4', 'dsp' => '1-4-10'],
['id' => '11', 'pid' => '4', 'dsp' => '1-4-10'],
];
function getAllChild($array,$id){
$arr = array();
foreach($array as $v){
if($v['pid'] == $id){
$arr[] = $v['id'];
$arr = array_merge($arr,getAllChild($array,$v['id']));
};
};
return $arr;
}
$res = getAllChild($data,'4');
var_dump($res);
//方法二
function recursion($data, $pid = 0)
{
static $child = []; // 定义存储子级数据数组
foreach ($data as $key => $value) {
if ($value['pid'] == $pid) {
$child[] = $value; // 满足条件的数据添加进child数组
unset($data[$key]); // 使用过后可以销毁
recursion($data, $value['id']); // 递归调用,查找当前数据的子级
}
}
return $child;
}
输出结果
array (size=4)
0 => string '5' (length=1)
1 => string '6' (length=1)
2 => string '10' (length=2)
3 => string '11' (length=2)
递归获取父级数据ID
function get_top_parentid($cate,$id){
$arr=array();
foreach($cate as $v){
if($v['id']==$id){
$arr[]=$v['id']; // $arr[$v['id']]=$v['name'];
$arr=array_merge($arr,get_top_parentid($cate,$v['pid']));
}
}
return $arr;
}
$res = get_top_parentid($data,'4');
var_dump($res);
输出结果