我在目录中有一个文件数组。我想将它们限制为每页一定数量。我将其设置为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>';
?>
答案 0 :(得分:0)
你应该换行:
$pagearray = $pagearray[$bpage];
成:
$pagearray = $pagearray[$bpage-1];
因为在PHP中,数组中的索引是0而不是1。
在第1页的代码中,您在索引1处显示数据,这实际上是数组的第二个元素。这是在最后一页你没有任何元素,因为索引$totalPages
没有数据(最后一个是$totalPages-1
)