2014-11-04 98 views
0

我有一個PHP foreach循環輸出一系列項目。PHP foreach循環標記

我想要實現的是一些代碼(div)包裹項目1 & 2,也纏繞最後一個項目的3 &。

這裏是PHP:

<?php foreach ($this->item->extra_fields as $key=>$extraField): ?> 

     <div class="<?php echo ($key%2) ? "odd" : "even"; ?> type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>"> 
     <span class="itemExtraFieldsValue"><?php echo JHTML::_('content.prepare', $extraField->value); ?></span> 
     <div class="clearfix"></div> 
     </div> 

     <?php $counter++; endforeach; ?> 

我如何能做到這一點任何想法?

非常感謝提前。

+0

所以你說你想容器DIV包裝每2'extraField'項目? – prodigitalson 2014-11-04 13:57:49

+0

你在問上面問的是@prodigitalson,還是你需要'1','2','3'和'last'項包裝? – Lodder 2014-11-04 14:00:23

+0

我需要以下內容:

item 1, item 2
item3 - last item (could be anything from 4 to 14)
user2713512 2014-11-04 15:06:51

回答

1

也許這樣的事情,請原諒我,我的PHP有點生疏。

<?php foreach ($this->item->extra_fields as $key=>$extraField): ?> 

<?php 
    $len = count($this->item->extra_fields); 
    if ($key == 1 || $key == 2 || $key == 3 || $key == len) { 
     echo "<div>"; 
    } 
?> 

    <div class="<?php echo ($key%2) ? "odd" : "even"; ?> type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>"> 

    <span class="itemExtraFieldsValue"><?php echo JHTML::_('content.prepare', $extraField->value); ?></span> 

    <div class="clearfix"></div> 

    </div> 

<?php 
    if ($key == 1 || $key == 2 || $key == 3 || $key == len) { 
     echo "</div>" ; 
    } 
?>  

<?php $counter++; endforeach; ?> 

可能要佔列表的長度,所以你最後的檢查可能是len + 1,和你的前3個檢查可能是(0,1,2),這取決於什麼$鍵值是。

你的代碼的$counter++部分在foreach中的作用有點令人困惑,也許你應該使用它來代替模數和密鑰。

無論如何編寫解決方案都很困難,因爲我相信您的代碼片段不完整,並且知道我們正在循環的數據以及僅有第3個和第包裹在一個div中的最後一項。