3

我有一个需要更改的简单新闻系统,因此我可以限制每页的项目,但我没有任何可以做到这一点的东西,所以我需要自己做。

基本上该函数只显示整个平面文件数组,我想将其限制为每页 3 个项目(可配置)。

我的开始逻辑是:

$itemspage=pages->current_page;
$itemsperpage=3;
$limitn=$itemperpage*$itemspage;
$itemindex=$limitn-2;

如果 page 为 1,它将显示来自数组索引 1、2、3 的新闻 如果 page 为 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 还没有完成,只是拆分背后的逻辑。你可以帮帮我吗?

4

1 回答 1

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 参数指定的数组数组中的元素序列。

于 2012-10-28T10:08:23.210 回答