查找a3下的所有子孙节点
参考:https://blog.csdn.net/taoyongjun4/article/details/78847521
实例
<?php
$a = [
['id'=>1, 'pid'=>0, 'name'=>'a1'],
['id'=>2, 'pid'=>1, 'name'=>'a2'],
['id'=>3, 'pid'=>2, 'name'=>'a3'],
['id'=>4, 'pid'=>3, 'name'=>'a4'],
['id'=>5, 'pid'=>4, 'name'=>'a5'],
['id'=>6, 'pid'=>5, 'name'=>'a6'],
];
//echo "<pre>";
//print_r($a);
//echo "<pre>";
// 函数定义(在类中自己修改)
/**
* 递归的实线
* @author Tom
*
* @param array $array 需要递归的数组
* @param int $topId 顶级的id
* @param int $lev 定义层级
*/
function getLower($array, $topId, $lev = 0) {
//1、定义一个空数组
$result = [];
foreach ($array as $key => $value) {
if ($value['pid'] == $topId) {
$value['lev'] = $lev; // 定义层级
$result[] = $value;
// var_dump($result);exit;
//2、$result所有数组,递归符合pid == $topId也就是首次的$value['id'],$lev开始累加
$result = array_merge($result, getLower($array, $value['id'], $lev + 1));
}
}
return $result;
}
$result = getLower($a, 3, 0);
echo "<pre>";
print_r($result);
echo "<pre>";
// 结果如下
/**
array(
array('id'=>4, ....,'lev'=>0)
array('id'=>5, ....,'lev'=>1)
array('id'=>6, ....,'lev'=>2)
);
*/