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

时间:2012-05-17 15:02:08

标签: php for-loop counter jquery-masonry

我正在开展一个学校项目,从报纸上获取RSS,并按照Masonry布局进行设计。我可以使用Simplepie类来获取用hs转换的RSS订阅源,但我希望通过计数器为每篇文章提供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>

    

相反,我希望第一篇文章有​​课程&#34;发表第1篇&#34;,第2篇文章&#34;发表第2篇&#34;在五篇文章后,第六篇文章应该得到#col;&#34; col1&#34;再来等等..

这是我的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; ?>
   

提前多多感谢!让我的项目继续进行将意味着很多。

5 个答案:

答案 0 :(得分:0)

尝试使用模数而不是创建计数器; $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;
    }
}

应该工作。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您需要使用大量<?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>

希望它有所帮助:) (我想你也是荷兰人,哈哈)

答案 3 :(得分:0)

<?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; ?>

答案 4 :(得分:0)

我认为你几乎就在那里,但我认为问题是如果teller = 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++;
}

?>