查找树的子节点
$tree = [
'id' => 0,
'name' => 'a',
'child' => [
[
'id' => 1,
'name' => 'b',
'child' => [
[
'id' => 2,
'name' => 'c'
],
[
'id' => 3,
'name' => 'd'
]
]
],
[
'id' => 4,
'name' => 'e',
'child' => [
[
'id' => 5,
'name' => 'f',
'child' => [
[
'id' => 7,
'name' => 'h'
],
]
],
[
'id' => 6,
'name' => 'g'
]
]
]
]
];
// 获取节点By ID
function getNodeById($node, $id){
if($node['id'] == $id){
return $node;
}
if(isset($node['child'])){
foreach($node['child'] as $childNode){
$node = getNodeById($childNode, $id);
if($node){
return $node;
}
}
}
return [];
}
// 获取树的所有叶子结点
function getTreeLeafNode($node)
{
$nodeIds = [];
if(isset($node['child'])){
foreach ($node['child'] as $childNode){
$nodeIds = array_merge($nodeIds, getTreeLeafNode($childNode));
}
}else{
$nodeIds[] = $node['id'];
}
return $nodeIds;
}