php的递归方式处理多级所属分类的多级分类显示,如:一级分类》二级分类》三级分类


一个分类数组,树形返回,下级分类数据存放在subcat里面,一共有三级分类,现在需要输入一个分类id,直接返回分类的名称,如:一级分类》二级分类》三级分类。


核心函数:

/**
 * 返回分类层级,如:一级分类》二级分类》三级分类
 * @param $categories array 树形分类
 * @param $categoryId int 分类ID的值
 * @param $idKey  string 分类ID的名称
 * @param $subcatKey string 二级分类的键名
 * @param $name string 需要返回的分类名称
 * @param $div string 分割字符串
 * @return mixed|string|null
 */
function getCategoryName($categories, $categoryId, $idKey = 'id', $subcatKey = 'subcat', $name = 'name', $div = ' » ')
{
    foreach ($categories as $category) {
        if ($category[$idKey] == $categoryId) {
            return $category[$name];
        }
        if (isset($category[$subcatKey])) {
            $result = getCategoryName($category[$subcatKey], $categoryId);
            if ($result !== null) {
                return $category[$name] . $div . $result;
            }
        }
    }
    return null;
}


调用实例():

$category = $categorys = array(
    0 =>
        array(
            'id' => 55,
            'name' => '产品中心',
            'pid' => 0,
            'url' => '/index/index/product',
            'subcat' =>
                array(
                    0 =>
                        array(
                            'id' => 60,
                            'name' => '产品大类2',
                            'pid' => 55,
                            'url' => '/index/index/product_detail',
                            'subcat' =>
                                array(
                                    0 =>
                                        array(
                                            'id' => 61,
                                            'name' => '产品小类1',
                                            'pid' => 60,
                                            'url' => '/index/index/product_detail',
                                        ),
                                    1 =>
                                        array(
                                            'id' => 62,
                                            'name' => '产品小类2',
                                            'pid' => 60,
                                            'url' => '/index/index/product_detail',
                                        ),
                                ),
                        ),
                    1 =>
                        array(
                            'id' => 63,
                            'name' => '产品大类3',
                            'pid' => 55,
                            'url' => '/index/index/product_detail',
                            'subcat' =>
                                array(
                                    0 =>
                                        array(
                                            'id' => 64,
                                            'name' => '名贵茶品',
                                            'pid' => 63,
                                            'url' => '/index/index/product/cid/abc',
                                        ),
                                ),
                        ),
                    2 =>
                        array(
                            'id' => 65,
                            'name' => '产品大类5',
                            'pid' => 55,
                            'url' => '/index/index/product_detail',
                        ),
                    3 =>
                        array(
                            'id' => 56,
                            'name' => '产品大类1',
                            'pid' => 55,
                            'url' => '/index/index/product_detail',
                            'subcat' =>
                                array(
                                    0 =>
                                        array(
                                            'id' => 57,
                                            'name' => '产品小类1',
                                            'pid' => 56,
                                            'url' => '/index/index/product_detail',
                                        ),
                                    1 =>
                                        array(
                                            'id' => 58,
                                            'name' => '产品小类2',
                                            'pid' => 56,
                                            'url' => '/index/index/product_detail',
                                        ),
                                    2 =>
                                        array(
                                            'id' => 59,
                                            'name' => '产品小类3',
                                            'pid' => 56,
                                            'url' => '/index/index/product_detail',
                                        ),
                                ),
                        ),
                ),
        ),
);

//调用
$value['category_name'] = getCategoryName($categorys, $value['category_id']);

效果:

image.png

评论/留言