如何像分页一样对数据分类?实现分页式内容列表展示
实现文章/页面/产品的分页列表展示
需求说明
- 将文章、页面、产品类内容按每10条一组进行分页展示
- 示例:若有55条内容,将分为5页:第1-4页各10条,第5页5条;50条内容则刚好分为5页,每页10条
PHP实现示例代码
<?php // 各类内容的总数量 $total_posts = 50; // 文章总数 $total_pages = 85; // 页面总数 $total_products = 123;// 产品总数 // 模拟各类内容的完整数据(实际项目中可从数据库获取) $data = '{ "post": [' . implode(',', array_map(function($i){return '"post-' . $i . '"';}, range(1, $total_posts))) . '], "page": [' . implode(',', array_map(function($i){return '"page-' . $i . '"';}, range(1, $total_pages))) . '], "product": [' . implode(',', array_map(function($i){return '"product-' . $i . '"';}, range(1, $total_products))) . '] }'; $data = json_decode($data, true); // 定义需要处理的内容类型 $post_types = ['post', 'page', 'product']; // 每页显示数量 $per_page = 10; // 遍历处理每种内容类型的分页 foreach ($post_types as $type) { echo '<h3>' . ucfirst($type) . ' 分页展示</h3>'; $total_items = ${"total_{$type}s"}; // 计算总页数 $total_pages_count = ceil($total_items / $per_page); // 遍历每一页 for ($page = 1; $page <= $total_pages_count; $page++) { echo '<p><strong>第' . $page . '页</strong>(共' . min($per_page, $total_items - ($page-1)*$per_page) . '条):</p>'; echo '<ul>'; // 计算当前页的起始和结束索引 $start = ($page - 1) * $per_page; $end = min($start + $per_page, $total_items); // 输出当前页的内容 for ($i = $start; $i < $end; $i++) { echo '<li>' . $data[$type][$i] . '</li>'; } echo '</ul>'; } } ?>
代码说明
- 先定义各类内容的总数量,模拟生成对应的数据列表(实际项目中可替换为数据库查询结果)
- 设置每页显示10条,计算每种内容类型的总页数
- 遍历每一页,计算当前页的内容范围,输出对应条目的列表
- 自动处理最后一页不足10条的情况
内容的提问来源于stack exchange,提问作者Amir Alam
相关产品推荐
相关产品推荐

