2017-04-08 75 views
0

我正在一行中的頁面上運行列表,每行列有三列。每一列都需要不同的類,我需要找到一種方法,在foreach循環回到這些類實現了以下...在foreach循環上運行三次迭代

<div class="row"> 
    <div class="box_skin1">...</div> 
    <div class="box_skin2">...</div> 
    <div class="box_skin3">...</div> 

    <div class="box_skin1">...</div> 
    <div class="box_skin2">...</div> 
    <div class="box_skin3">...</div> 
</div> 

我目前使用的交替行以下,但現在需要添加第三... 我怎麼做?

<?php $counter = 1; ?> 
<div class="row"> 
    <?php foreach ($newsRecords as $record): ?> 
     <?php if($counter % 2) : ?> 
      <!-- ROW 1 --> 
      <div class="box_skin1">...</div> 
     <?php else : ?> 
      <!-- ROW 2 --> 
      <div class="box_skin2">...</div> 
     <?php endif; ?>  
    <?php $counter++; ?> 
    <?php endforeach ?> 
</div> 
+1

在清除事件之間不會有'else if'語句嗎?那並使用'%3'而不是'%2'?這樣你就可以迭代三個一組。 –

回答

2

這應該工作

EDITED

<?php $counter = 1; ?> 
<div class="row"> 
    <?php foreach ($newsRecords as $record): ?> 
     <?php if($counter % 3 == 0) : ?> 
      <!-- ROW 3 --> 
      <div class="box_skin3">...</div> 
     <?php elseif ($counter % 3 == 2) : ?> 
      <!-- ROW 2 --> 
      <div class="box_skin2">...</div> 
     <?php elseif ($counter % 3 == 1): ?> 
      <!-- ROW 1 --> 
      <div class="box_skin1">...</div> 

     <?php endif; ?>  
    <?php $counter++; ?> 
    <?php endforeach ?> 
</div> 
+0

此代碼返回以下結構'box_skin3','box_skin3','box_skin2','box_skin3','box_skin3','box_skin2'。所以它不起作用 – TerryAlly

+0

我的不好,編輯了這個作品的答案 – rrmerugu

+0

這很有效。完善。你能用英文'這個代碼'($ counter%3 == 2)來解釋嗎?我認爲模數只返回1或0? – TerryAlly

0

IF-ELSE免費結構。如果你打算添加新的div,那麼你不必添加新的其他 - 如果條件只是你需要增加計數器的大小,它會工作。

<?php $counter = 1; ?> 
<div class="row"> 
    <?php foreach ($newsRecords as $record): ?> 
     <div class="box_skin<?php echo $counter; ?>">...</div> 
    <?php 
     $counter++; 
     if ($counter >= 3) { 
     $counter = 1; 
     } 
    ?> 
    <?php endforeach ?> 
</div> 
+0

如果我是交替行,這將工作。它是返回1,2,1,2,1,2,1,2但我需要的是1,2,3,1,2,3,1,2,3 – TerryAlly

+0

然後刪除=從這個$ counter> = 3或增加到$ counter> = 4,並upvote,如果它會工作:) –