如何在PHP分页展示中按交叉布局添加空div(含实现代码)
嘿,我来帮你搞定这个分页+交叉插入空div的需求~
首先,你当前的代码有个小问题:$keys是全局计数的,当切换到第二页时,第一条记录的$keys会从10开始,原来的3、5、7判断就完全不生效了。咱们得先把分页逻辑做好,让每页的记录都重新从1开始计数,这样才能在每页都正确插入空div。
下面是调整后的完整代码,我帮你加了分页处理,还优化了判断逻辑:
// 1. 处理分页参数 $currentPage = isset($_GET['page']) ? max(1, (int)$_GET['page']) : 1; $recordsPerPage = 9; // 27条分3页,每页9条 $totalRecords = count($fetrecords); $totalPages = ceil($totalRecords / $recordsPerPage); // 确保页码不超出有效范围 if ($currentPage > $totalPages) { $currentPage = $totalPages; } // 2. 截取当前页的记录 $startIndex = ($currentPage - 1) * $recordsPerPage; $currentPageRecords = array_slice($fetrecords, $startIndex, $recordsPerPage); // 3. 循环渲染当前页内容,每页内重新计数 $itemKey = 1; foreach ($currentPageRecords as $recVals) { // 用in_array让判断更简洁易维护 if (in_array($itemKey, [3, 5, 7])) { // 注意:HTML里id必须唯一,建议改成class哦 echo '<div class="emptydiv">test</div>'; } else { echo '<div class="mainarticles">code</div>'; } $itemKey++; } // 4. 渲染分页导航 echo '<div class="pagination">'; for ($page = 1; $page <= $totalPages; $page++) { $activeClass = ($page === $currentPage) ? 'active' : ''; echo "<a href='?page={$page}' class='{$activeClass}'>{$page}</a>"; } echo '</div>';
几点说明:
- 分页逻辑:通过
array_slice截取当前页的9条记录,保证每页的itemKey从1开始计数,这样原来的插入空div的规则在每页都能生效。 - ID改Class:你原来用了重复的
id="emptydiv"和id="mainarticles",这不符合HTML规范(id必须唯一),我改成了class,后续写CSS样式也更合理。 - 灵活调整:如果需要改变空div的插入位置,只需要修改
in_array里的数组就行,比如想在第2、4、6位插入,就改成[2, 4, 6]。 - 页码安全:加了
max(1, ...)和页码范围判断,避免非法页码导致的错误。
这样调整后,就能实现你要的“每页按交叉方向添加空div”的效果啦~
内容的提问来源于stack exchange,提问作者Karthik
相关产品推荐
相关产品推荐

