操纵foreach循环

时间:2014-11-18 17:05:48

标签: php foreach

我有以下foreach循环:

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

    <span class="itemExtraFieldsValue"><?php echo $extraField->value; ?></span>

<?php endforeach; ?>

前两项是好的,但是项目3-14我需要包装在一个div中,所以我可以控制布局。我想知道我会怎么做?问题不是所有3-14项都将被填充。

欢迎任何建议......谢谢

2 个答案:

答案 0 :(得分:0)

所以有了你的补充,因为原来的公式应该有效,所以不要搞砸那部分。而是通过$style变量进行添加,如下所示:

    $i = 1;
    foreach ($this->item->extra_fields as $key=>$extraField):
        if($i == 1)
            $style  =    'id="largeImageWrap" class="pull-left"';
        elseif($i == 2)
            $style  =   'id="sidePanelWrap"';
        else
            $style  =   'class="row"';

          // If less than or equal to 3, add <div>
         if(($i <= 3))
            $front  =   true;
        // If greater than 14 <div>
        elseif(($i > 14))
            $front  =   true;
        // Else no <div>
        else
            $front  =   false;

        if($front == true) echo "<div $style>"; ?>

         <span class="itemExtraFieldsValue"><?php echo $extraField->value; ?></span>

    <?php
        // If greater than 2 and less than 14 echo blank or </div>
        echo (($i > 2) && ($i < 14))? "":"
        </div>";
    $i++;
    endforeach;

答案 1 :(得分:0)

您需要一个控制变量来确定您所处的迭代,从那里您可以从第三次迭代中添加div或您想要做的任何事情。你可以尝试这样的事情:

 <?php $i = 0;

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

   <?php $i++;
    if ($i < 3) { ?>

    <span class="itemExtraFieldsValue"><?php echo $extraField->value; ?></span>

 <?php   } else { ?>

     Add divs, or whatever you want to do here.

   <?php }

     endforeach; ?>