对于 PHP 中带有计数器的循环不起作用


For loop with counter in PHP not working

我正在做一个学校项目,从报纸上获取rss提要,并将它们放在砌体布局中。我可以使用 Simplepie 类让 rss 提要转换为 html,但我想用计数器为每篇文章提供从 1 到 5 的列大小。

这是我在 html 中得到的:

<div class="post col1 col2 col3 col4 col5 col1 col2 col3 col4 col5"> <!-- begin post -->
<h3 class="title"><a href="http://feedproxy.google.com/~r/dso-nieuws-sport/~3/zfFYeKYGagk/detail.aspx">Bergen naar halve finales play-offs basket</a></h3>

相反,我希望第一篇文章有类"post col1",第二篇文章有"post col2",在五篇文章之后,第六篇文章应该再次得到"col1",依此类推。

这是我的PHP代码:

<?php if ($sportfeed->data): ?>
 <?php $sportitems = $sportfeed->get_items(); ?>
      <?php foreach($sportitems as $sportitem): ?>
            <?php $enclosure = $sportitem->get_enclosure(0); ?>
                  <?php if ($enclosure):?> 
                    <div class="post
                    <?php  $teller = 1;
                           for ($i = 1; $i <= 10 /* aantal artikels in feed */; $i++) {
                           if ($teller == 1) {
                             echo " col1";
                             ++$teller;
                              } else if ($teller ==2) 
                              {
                                echo " col2"; 
                                ++$teller;
                               } else if ($teller ==3) 
                               {
                                 echo " col3"; 
                                 ++$teller; 
                                 } else if ($teller ==4) 
                                 {
                                     echo " col4"; 
                                     ++$teller;
                                  } else 
                                  { echo " col5"; 
                                  $teller =1; 
                                  }
                            }?>"> <!-- begin post -->
                    <h3 class="title"><a href="<?php echo $sportitem->get_permalink(); ?>"><?php echo $sportitem->get_title(); ?></a></h3>
                    <img src ="<?php echo $enclosure->get_link(); ?> "class="img_artikel"/>
                    </div> <!-- einde post -->  
                  <?php endif; ?> 
       <?php endforeach; ?>

提前非常感谢!让我的项目继续下去意味着很多。

尝试使用模数而不是创建计数器; $teller = $i % 5 将返回余数,因此它会给你一个从 0 到 4 的数字。

for ($i = 1; $i <= 10 /* aantal artikels in feed */; $i++) {
    $teller = $i % 5;
    if ($teller == 0) {
        echo " col5";
    } else {
        echo " col" . $teller;
    }
}

应该工作。

$teller = 1;
for ($i = 1; $i <= 10 ; $i++) {
   if($i%6==0)
    {
       $teller=1;
       echo " col1";
    }else{
      echo " col".$teller;
    }
    $teller++;
}

您使用了很多<?php?>标签,而您只需要一对。
你也使用endifendforeach}对我来说似乎更合乎逻辑。我重新格式化了您的代码:

if ($sportfeed->data)
{
    $sportitems = $sportfeed->get_items(); 
    $teller = 1;
    foreach($sportitems as $sportitem)
    {
        $enclosure = $sportitem->get_enclosure(0); 
        if ($enclosure)
        {
            echo '<div class="post col' . $teller;
            $teller = $teller == 5 ? 1 : $teller + 1;
            echo '"> <!-- begin post --><h3 class="title"><a href="' . $sportitem-    >get_permalink(); . '">' . $sportitem->get_title(); . '</a></h3>';
            echo '<img src="' . $enclosure->get_link(); . '"class="img_artikel"/></div>    <!-- einde post -->';
        }
    }
}

整个for循环是不必要的,如果我确实了解你想要实现的目标。上面的代码应该打印一个输出,如下所示:

<div class="post col1"> .... </div>
<div class="post col2"> .... </div>
<div class="post col3"> .... </div>
<div class="post col4"> .... </div>
<div class="post col5"> .... </div>
<div class="post col1"> .... </div>
<div class="post col2"> .... </div>

希望它对:)有所帮助(顺便说一句,我想你也是荷兰人,哈哈)

<?php
if ($sportfeed->data):
    $sportitems = $sportfeed->get_items();
    $i = 1;
    foreach($sportitems as $sportitem):
        $enclosure = $sportitem->get_enclosure(0);
        if ($enclosure):
            echo '<div class="post';
            if ($i % 5 == 0) {
                echo " col5";
            } else {
                echo " col" . ($i % 5);
            }
            echo '"> <!-- begin post -->';
 ?>
     <h3 class="title"><a href="<?php echo $sportitem->get_permalink(); ?>"><?php echo $sportitem->get_title(); ?></a></h3>
     <img src ="<?php echo $enclosure->get_link(); ?> "class="img_artikel"/>
 </div> <!-- einde post -->  
        <?php endif; ?>
        <?php $i++; ?>
    <?php endforeach; ?>
<?php endif; ?>

我认为你快到了,但我认为问题是如果出纳员 = 1,那么你把它放进去,所以它等于 2 执行第二个块等等,只是尝试把它全部放在循环中并在最后递增一次......

我认为这样的事情会起作用:

<?php  $teller = 1;                            
 for ($i = 1; $i <= 10; $i++)
{                           
   if ($teller == 1) 
   {                               
      echo " col1";
   } 
   else if ($teller ==2)
   { 
      echo " col2";                                
    } 
    else if ($teller ==3)                                
    {                                 
    echo " col3";        
    } 
     else if ($teller ==4)                                   
    {                                      
      echo " col4"; 
               } 
   else                                    
   {
     echo " col5"; 
      $teller =1;
   } 
echo " '>";              
echo"<h3 class='title'> <a href='#'></a></h3>";                   
echo"<img src ='#' class='img_artikel'/>";                 
echo"</div>"; 
$teller++;
}
?>