blackdarthvader
@blackdarthvader
Только учусь кодить ^_^

Можно ли разделить цикл foreach?

Здравствуйте, как можно разделить цикл foreach (не знаю как правильно назвать), для того чтобы задать особые стили для каждого из элемента в цикле.

Всего в цикле 8 элементов.

Сам код выглядит так

<? if (isset($list[0])) { ?>
<div class="bproduct <?=$type?>-rating-list">
    <h2 class="mb25"><span><?=Lang::get($type)?></span></h2>
    <ul class="lproduct flin w1215 w226li <? if($displayAsCarousel){ ?> jcarousel-skin <? } ?> clrfix">
        <? foreach ($list as $item) { ?>
        <li>
            <a class="pic" href="<?=UrlGenerator::generateItemUrl($item['Id'])?>" target="_blank">
                <i><img src="<?=! empty($item['custom_picture']) ? $item['custom_picture'] : ProductsHelper::getImage($item, 'medium') ?>"></i>
                <ins></ins>
            </a>
            <div class="price">
                <a href="<?=UrlGenerator::generateItemUrl($item['Id'])?>" target="_blank">
                    <? if (count($item['PromotionPrice'])>0) { ?>
                        <span><?=General::getCurrencyPromoPrice($item)?></span>
                    <? }else{ ?>
                        <span><?=General::getCurrencyPrice($item)?></span>
                    <? } ?>
                    <? if (count($item['PromotionPrice'])>0) { ?>
                    <span class="old_item_price"><?=General::getCurrencyPrice($item)?></span><br>
                    <? } ?>
                </a>
            </div>
            <div class="vendor">
                <a href="/vendor?id=<?=$item['VendorId']?>" target="_blank"><?=$item['VendorId']?></a>
            </div>
        </li>
        <? } ?>
    </ul>
</div>
<? } ?>


Сейчас цикл выводится в <ul> и на практике мы получаем следующее

59j-KXVF75A.jpg

А я хочу самым первым вывести первый элемент и заключить его в div, после еще 3 элемента и тоже заключить в div, за тем еще 1 и заключить его в div, после чего еще последние 3 элемента.

т.е чтобы получилось что - то такое

<div>элемент 1</div>
<div>элемент 2,3,4</div
<div>элемент 5</div>
<div>элемент 6,7,8</div>


Я конечно могу распечатать из этой части <? foreach ($list as $item) { ?> переменную $item и обращаться к каждому элементы на прямую, но мне это не подходит. Можно ли как то по другому разделить цикл как мне нужно?
  • Вопрос задан
  • 530 просмотров
Пригласить эксперта
Ответы на вопрос 1
edli007
@edli007
full stack, team lead
С точки зрения MVC немного неверная логика.
Вот это <?=General::getCurrencyPrice($item)?> должно быть в контролере, т.е. вы сначала сформируйте масив, со всеми данными, а потом выводите его в HTML.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы