树节点查找

查找树的子节点
$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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值