PHP实现无限极分类

/**
 * 栏目无限级分类
 * @param $data array 待排序数组
 * @param $pid int  要查找的顶级分类
 * @param string $field 查找的字段
 * @param string $childNode 子节点名称
 * @return array
 */
function unlimitedSort($data, $pid, $field = 'parent_id', $childNode = 'child')
{
    $tree = [];
    foreach ($data as $item) {
        if ($item[$field] == $pid) {
            $item[$childNode] = unlimitedSort($data, $item['id'], $field, $childNode);
            // 卸载掉空的数组元素
            if ($item[$childNode] == null) {
                unset($item[$childNode]);
            }
            $tree[] = $item;
        }
    }
    return $tree;
}

写个数组试验一下

$array = [
    ['id' => 1, 'pid' => 0, 'title' => '小米'],
    ['id' => 2, 'pid' => 1, 'title' => '智能穿戴设备'],
    ['id' => 3, 'pid' => 1, 'title' => '手机'],
    ['id' => 4, 'pid' => 2, 'title' => '手环'],
    ['id' => 5, 'pid' => 3, 'title' => '小米9'],
    ['id' => 6, 'pid' => 0, 'title' => '华为'],
];

那么输出结果为

$r = unlimitedSort($array, 0, 'pid');
print_r($r);

示例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值