我有一个简单的新闻系统,我需要更改,所以我可以限制每页的项目,但我没有任何可以做到这一点,所以我需要自己这样做。
基本上该函数只显示整个平面文件数组,我想将其限制为每页3个项目(可配置)。
我的开始逻辑是:
$itemspage=pages->current_page;
$itemsperpage=3;
$limitn=$itemperpage*$itemspage;
$itemindex=$limitn-2;
如果页面为1,它将显示来自数组索引1,2,3的新闻 如果页面是2,它将显示来自数组索引4,5,6的新闻 等等...
我认为这在逻辑上应该可行,但如果阵列中的新闻不能分成3个怎么办?这个逻辑应该(至少在起始索引上)导致错误。
整个代码在这里:
$list = $this->getNewsList();
$pages = new Paginator;
echo "<table class='newsList'>";
foreach ($list as $value) {
$newsData = file($this->newsDir.DIRECTORY_SEPARATOR.$value);
$newsTitle = $newsData[0];
$submitDate = $newsData[1];
unset ($newsData['0']);
unset ($newsData['1']);
$newsContent = "";
$itemspage=pages->current_page;
$itemperpage=3;
$limitn=$itemperpage*$itemspage;
$itemindex=$limitn - 2;
foreach ($newsData as $value) {
$newsContent .= $value;
}
echo "<tr><th align='left'>$newsTitle</th>
<th class='right'>$submitDate</th></tr>";
echo "<tr><td colspan='2'>".$newsContent."<br/></td></tr>";
}
echo "</table>";
for还没有完成分裂背后的逻辑。你能帮帮我吗?
答案 0 :(得分:0)
我不确定你是如何构建你的$ newsContent,但也许你的答案就在这里:
$list = $this->getNewsList();
$pages = new Paginator;
$itemspage = $pages->current_page;
$itemperpage = 3; // you might want te define this property in the paginator also ($itemperpage = $pages->items_per_page);
$currentPageList = array_slice($list, ($itemspage - 1) * $itemperpage, $itemspage);
echo "<table class='newsList'>";
foreach ($currentPageList as $value) {
$newsData = file($this->newsDir.DIRECTORY_SEPARATOR.$value);
$newsTitle = $newsData[0];
$submitDate = $newsData[1];
unset ($newsData['0']);
unset ($newsData['1']);
$newsContent = "";
$limitn=$itemperpage*$itemspage;
$itemindex=$limitn - 2;
foreach ($newsData as $value) {
$newsContent .= $value;
}
echo "<tr><th align='left'>$newsTitle</th>
<th class='right'>$submitDate</th></tr>";
echo "<tr><td colspan='2'>".$newsContent."<br/></td></tr>";
}
echo "</table>";
请注意array_slice:
array_slice()返回数组中的元素序列,由offset和length参数指定。