如何跳过foreach循环中的第一个实例并限制为8?

时间:2015-07-04 14:12:58

标签: php foreach pagination limit

我想知道是否有人可以帮我这个...... 基本上我正在尝试现代化我的网站的新闻系统,但我似乎无法限制在我的博客部分网站上的foreach循环中显示的帖子数量。我需要跳过第一个实例,因为它已在页面顶部提升。我尝试了各种谷歌搜索,但我得到了C ++ Perl和python的结果,真正令人恼火的是什么。我只需要一个简单的PHP解决方案。我将在下面弹出我的代码,看看是否有人可以提供帮助。感谢您提前帮助。请记住留下您的回答作为答案,以便我们可以在他们帮助时加以标记;)

<div class="view22 full" style="margin-top:0;">
    <h3>Recent News and Announcements</h3>
    <?php foreach ($articles as $article) { 
?>
        <div class="ah7_ clearfix">
            <p class="date"><?php echo date('F j', $article['article_timestamp']); ?>, <?php echo date('Y', $article['article_timestamp']); ?></p>
            <h3><a href="<?php echo $url.'/newsroom/'.$article['article_id']; ?>"><?php echo $article['article_title']; ?></a></h3>
        </div>
    <?php 
    }
?>
</div>

3 个答案:

答案 0 :(得分:2)

我假设$ articles数组的键以0开头。如何修改循环:

foreach ($articles as $key => $article) 

并检查$ key在开头是否为0?

if($key == 0)
   continue;

如果数组键不同:创建一个新变量$ i,将其设置为0并在每个foreach循环迭代中将值增加1。

$i = 0;
foreach ($articles as  $article) {
   $i++;
   if($i == 1)
      continue;
   elseif($i > 8)
      break;

   //the other code goes here
}

如果它基于SQL查询,则使用&#34; limit&#34;可能有助于减少负荷!

答案 1 :(得分:0)

要删除第一个实例,您可以在复制它或将其打印为特色新闻后手动取消设置该项目($ articles [0])。

要限制发布的数量,可以使用mysql LIMIT子句;

或者你可以做这样的事情

foreach($articles as $key => $article){
    if($key===0)
        continue;
    if($key===8)
        break;
    echo $article;// or_do_whatever_youwant_with($article);
}

答案 2 :(得分:0)

您可以做一些事情:

  1. 如果$ articles是一个包含连续索引的数组数组,请使用for循环而不是foreach并执行类似

    的操作
    for ($i = 1; $i < 8 : $i++ ) { 
      // and access it like
       $articles[$i]['some_index'] ...
    }
    
  2. 如果不是,那么您可以使用外部计数器 说

        $counter = -1; 
        foreach ( $articles as $article) { 
            $counter++;
            if (!$counter) continue;
            if ($counter > 7 ) break;
        ...// your code //
       }
    
  3. 您可以使用LIMIT和OFFSET

  4. 更改您的Mysql查询,只为您提供所需的数据