当前位置:首页 > PHP

php实现分类效果

2026-02-16 13:20:32PHP

使用数组实现分类

在PHP中可以通过多维数组来组织分类数据。定义一个包含分类信息的数组,每个分类可以包含子分类。

$categories = [
    '电子产品' => [
        '手机',
        '电脑',
        '平板'
    ],
    '服装' => [
        '男装',
        '女装',
        '童装'
    ]
];

遍历数组显示分类:

foreach($categories as $category => $subcategories) {
    echo "<h3>$category</h3>";
    echo "<ul>";
    foreach($subcategories as $subcategory) {
        echo "<li>$subcategory</li>";
    }
    echo "</ul>";
}

数据库存储分类结构

更实用的方案是使用数据库存储分类数据。创建categories表:

CREATE TABLE categories (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    parent_id INT DEFAULT NULL,
    FOREIGN KEY (parent_id) REFERENCES categories(id)
);

插入示例数据:

php实现分类效果

INSERT INTO categories (name, parent_id) VALUES 
('电子产品', NULL),
('服装', NULL),
('手机', 1),
('电脑', 1),
('男装', 2),
('女装', 2);

递归查询分类树

从数据库获取分类并构建树形结构:

function buildCategoryTree($parentId = null) {
    $tree = [];
    $sql = "SELECT * FROM categories WHERE parent_id " . ($parentId ? "= $parentId" : "IS NULL");
    $result = $pdo->query($sql);

    while($row = $result->fetch()) {
        $node = [
            'id' => $row['id'],
            'name' => $row['name'],
            'children' => buildCategoryTree($row['id'])
        ];
        $tree[] = $node;
    }

    return $tree;
}

$categoryTree = buildCategoryTree();
print_r($categoryTree);

使用ORM实现分类

使用Eloquent ORM可以更简洁地实现分类关系:

php实现分类效果

class Category extends Model {
    public function parent() {
        return $this->belongsTo(Category::class, 'parent_id');
    }

    public function children() {
        return $this->hasMany(Category::class, 'parent_id');
    }
}

// 获取顶级分类及其子分类
$categories = Category::with('children')
    ->whereNull('parent_id')
    ->get();

分类URL路由处理

为分类创建友好的URL路由:

// routes/web.php
Route::get('/category/{slug}', function($slug) {
    $category = Category::where('slug', $slug)->firstOrFail();
    return view('category', ['category' => $category]);
});

分类缓存优化

对分类数据进行缓存提高性能:

$categories = Cache::remember('categories', 3600, function() {
    return Category::with('children')
        ->whereNull('parent_id')
        ->get();
});

无限级分类展示

在前端展示无限级分类菜单:

function renderCategoryMenu($categories, $level = 0) {
    $indent = str_repeat('&nbsp;', $level * 4);
    echo '<ul>';
    foreach($categories as $category) {
        echo "<li>{$indent}{$category['name']}";
        if(!empty($category['children'])) {
            renderCategoryMenu($category['children'], $level + 1);
        }
        echo '</li>';
    }
    echo '</ul>';
}

renderCategoryMenu($categoryTree);

标签: 效果php
分享给朋友:

相关文章

php实现购物车

php实现购物车

PHP实现购物车功能 购物车功能是电商网站的核心模块之一,通常涉及商品添加、删除、数量修改和结算等操作。以下是使用PHP实现购物车功能的几种方法。 使用Session存储购物车数据 Session是…

php实现登录

php实现登录

PHP 登录功能实现 数据库连接与用户表创建 创建一个数据库连接文件 db.php,用于管理数据库连接。MySQL 示例代码如下: <?php $host = 'localhost'; $db…

php 实现验证码

php 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证码…

php实现跳转

php实现跳转

PHP 实现页面跳转的方法 在 PHP 中实现页面跳转有多种方式,以下是常见的几种方法及其适用场景: 使用 header() 函数 通过 header() 函数发送 HTTP 头部信息实现跳转。注意…

php搜索功能实现

php搜索功能实现

实现基本的PHP搜索功能 使用MySQL数据库和PHP实现简单的关键词搜索功能。需要确保数据库中有可供搜索的表和数据。 // 连接数据库 $conn = new mysqli('localhost'…

php实现博客

php实现博客

使用PHP实现博客系统 数据库设计 创建数据库表存储博客文章和用户信息。常见的表包括posts(文章)和users(用户)。 CREATE TABLE users ( id INT AUTO…