数组分页创建空的额外页面

时间:2014-07-04 06:59:59

标签: php arrays pagination

我在目录中有一个文件数组。我想将它们限制为每页一定数量。我将其设置为5用于测试目的。它会创建一个没有输出的额外页面。我无法弄清楚它为什么要创建额外的页面。有人有什么想法吗?

<?php
$offset = '5';
$dir    = 'posts';
$files1 = array_diff(scandir($dir), array(
    '..',
    '.'
));



if (isset($_GET['bpage'])) {
    $bpage = $_GET['bpage'];
} else {
    $bpage = 1;
}

$count = count($files1);

if ($bpage < 1) {
    $bpage = 1;
}

$pagearray = array_chunk($files1, $offset);

$pagearray = $pagearray[$bpage];


foreach ($pagearray as $item) {
    echo $item . '<br />';
}

$startResults = ($bpage - 1) * $offset;
$totalPages   = ceil($count / $offset);

echo '<div class="pagination pagination-centered"><ul>';
echo '<li><a href="?bpage=1">First</a></li>';

for ($i = 1; $i <= $totalPages; $i++) {
    if ($i == $bpage)
        echo '<li class="active"><a href="#">' . $i . '</a></li>';
    else
        echo '<li><a href="?bpage=' . $i . '">' . $i . '</a></li>';
}

echo '<li><a href="?bpage=' . $totalPages . '">Last</a></li>';
echo '</ul></div>';
?>

1 个答案:

答案 0 :(得分:0)

你应该换行:

$pagearray = $pagearray[$bpage];

成:

$pagearray = $pagearray[$bpage-1];

因为在PHP中,数组中的索引是0而不是1。

在第1页的代码中,您在索引1处显示数据,这实际上是数组的第二个元素。这是在最后一页你没有任何元素,因为索引$totalPages没有数据(最后一个是$totalPages-1