PHP实现无限极分类代码

本文介绍了如何使用PHP编程语言来实现无限级分类的功能,涵盖了关键的递归算法和数据库交互,帮助开发者构建灵活的数据组织结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php

$area = array(
    array('id' => 1, 'name' => '安徽', 'parent' => 0),
    array('id' => 2, 'name' => '海淀', 'parent' => 7),
    array('id' => 3, 'name' => '剧溪县', 'parent' => 5),
    array('id' => 4, 'name' => '昌平', 'parent' => 7),
    array('id' => 5, 'name' => '淮北', 'parent' => 1),
    array('id' => 6, 'name' => '曹阳', 'parent' => 7),
    array('id' => 7, 'name' => '北京', 'parent' => 0),
    array('id' => 8, 'name' => '上地', 'parent' => 2)
);

function findSons ($arr, $id) {
    $sons = array();

    foreach ($arr as $v) {
        if ($v['parent'] == $id) {
            $sons[] = $v;
        }
    }

    return $sons;
}

function subTree ($arr, $id, $levl) {
    $subs = array();

    foreach ($arr as $v) {
        if ($v['parent'] == $id) {
            $v['levl'] = $levl;
            $subs[] = $v;
            //为什么不能使用levl++?因为在执行到北京的时候,$levl自加了1,就变为2了
            $subs = array_merge($subs, subtree($arr, $v['id'], $levl + 1));
        }
    }

    return $subs;
}

//$subs = subTree($area, 0, $levl = 1);
//foreach($subs as $v) {
//    echo str_repeat('--', $v['levl']) . $v['name']. "<br>";
//}

function familyTree ($arr, $id) {
    $tree = array();

    foreach ($arr as $v) {
        if ($v['id'] == $id) {

            if ($v['parent'] > 0) {
                //在此处传入$v['parent'],其值就是父元素的id
                $tree = array_merge($tree, familyTree($arr, $v['parent']));
            }

            $tree[] = $v;
        }
    }

    return $tree;
}

print_r(familyTree($area, 3));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值