一个分类数组,树形返回,下级分类数据存放在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']);
效果: