You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:07:45