2014-11-04 68 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中的最后一项。