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

How to skip the first instance in a foreach loop and limit to 8?

我想知道是否有人可以帮我解决这个... 基本上我正在尝试使我的网站的新闻系统现代化,但我似乎无法限制在网站博客部分的 foreach 循环中显示的帖子数量。我需要跳过第一个实例,因为它已经在页面顶部进行了提升。我尝试了各种 google 搜索,但我得到的是 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>

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

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

或者你可以这样做

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

我假设 $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 查询,使用 "limit" 可能有助于减少负载!

您可以做几件事:

  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 查询以仅提供所需的数据