2014-09-28 36 views
1

考慮以下循環:PHP循環插話

  <?php foreach ($this->item->extra_fields as $key=>$extraField): ?> 
      <?php if($extraField->value != ''): ?> 
       <div class="<?php echo ($key%2) ? "odd" : "even"; ?> type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>"> 
        <span class="itemExtraFieldsValue"><?php echo $extraField->value; ?></span> 
       </div> 
      <?php endif; ?> 
     <?php endforeach; ?> 

我想包裝在一個div第12個項目,並在一個div那麼最後2項。問題是在第一個div中並不總是有12個項目。可以有2到12個項目。

我將如何操縱這個循環來實現這樣的目標?非常感謝

回答

0

只需在循環內使用計數器即可查看您經歷過多少次。

<?php $count = 1; ?> 
<?php $break= count($this->item->extra_fields) - 2; ?> 
<?php echo "<div>"; ?> 
<?php foreach ($this->item->extra_fields as $key=>$extraField): ?> 
    <?php if($extraField->value != ''): ?> 
     <div class="<?php echo ($key%2) ? "odd" : "even"; ?> type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>"> 
      <span class="itemExtraFieldsValue"><?php echo $extraField->value; ?></span> 
     </div> 
     <?php $count++; ?> 
    <?php endif; ?> 
    <?php if ($count == $break) : ?> 
     <?php echo "</div><div>"; $count ==0; ?> 
    <?php endif; ?> 
<?php endforeach; ?> 
<?php echo '</div>'; ?> 
+0

所以我需要的是這樣的:

1
2
3
4 ... potentially up to 12
Last items go in here
j00m 2014-09-28 13:47:34

+0

這可能是更容易這樣解釋。 我需要在div中的最後2之前包裝所有項目。然後我需要將最後2個換成div。 – j00m 2014-09-28 13:56:35

+0

好吧,我更新了答案,看看它是否適合你。 – 2014-09-29 13:05:24