Управление циклом foreach

0

У меня есть следующий цикл foreach:

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

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

<?php endforeach; ?>

Первые 2 элемента в порядке, но элементы 3-14 мне нужно обернуть в div, чтобы я мог контролировать макет. Мне интересно, как я это сделаю? Проблема не в том, что все 3-14 предметов будут заполнены.

Любые советы приветствуются... спасибо

Теги:
foreach

2 ответа

0

Вам нужна контрольная переменная, чтобы определить, к какой итерации вы находитесь, оттуда вы можете добавить divs или все, что вы хотите сделать с третьей итерации вперед. Вы можете попробовать что-то вроде этого:

 <?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; ?>
0

Таким образом, с вашими дополнениями, поскольку исходная формула должна работать, не связывайтесь с этой частью. Вместо этого $style переменную $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;
  • 0
    ХОРОШО. Так что, если бы я хотел расширить это и сделать что-то вроде этого: <div> item 1 </ div> <div> item 2 </ div> <div> item 3-14 </ div>
  • 0
    Как вы хотите, чтобы все 3 - 14 внутри div?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню