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);

PHP实现无限极分类_第1张图片

你可能感兴趣的:(PHP常用函数库)