php foreach loop help - PullRequest
       16

php foreach loop help

0 голосов
/ 15 апреля 2011

У меня есть цикл foreach, который строит мне страницу продукта, в основном, это выводит мои продукты в строки по 3.

См. Код:

foreach ($product_sets as $product)
{
    $currentRow = ceil($currentItem / 3);
    $currentColumn = $currentItem - (($currentRow - 1) * 3);
    if ($number_of_blanks == 2) :
        if (($number_of_rows > 1 && $currentRow == ($number_of_rows - 1) && $currentColumn == 2) || ($number_of_rows == 1 && $currentColumn == 1)) :
    ?>
            <li><img src="<?php echo site_url('assets/img/blocks/guarantee.png'); ?>" alt="5 Year Guarantee" width="242" height="156"></li>
    <?php
            $currentItem++;
        endif;
    endif;
    ?>
    <li class="<?php if($currentItem % 3 == 0) echo 'endHomeBlock';?>">
        <?php $this->load->view('blocks/product_small', array('product' => $product)); ?>
    </li>
    <?php
        $currentItem++;

    }

То, что я хочу быть в состоянииЧтобы сделать это, поместите изображение (пункт продажи) в конце первой строки, и случайным образом через другие строки, но сохраняя 3 элемента (включая изображение точки продажи) в строке.У меня есть пути к изображениям в массиве, который называется images, который выглядит примерно так:

$images = array(
  'iamge1.png',
  'image2.png,
  'image3.png,
  'image4.png,
);

Как мне этого добиться?Я уже несколько часов копаюсь: (

Ответы [ 2 ]

0 голосов
/ 15 апреля 2011

Извините, у меня не так много времени, чтобы написать вам полный код, но должно работать следующее:

<ul>
    <li><?php
        foreach($items as $i=>$item){
            // ...write item...
            if(($i % 3)==0 && $i!=0){ // if multiple of 3 and not the first time..
                ?></li><li><?php
            }
        }
    ?></li>
</ul>
0 голосов
/ 15 апреля 2011

Итак, я бы создал хеш-таблицу ваших изображений и в каких точках таблицы вы хотите их отобразить.Ключом таблицы будет индекс, а значением будет имя изображения.

Предполагая, что $currentItem начинается с нуля, первый ключ, который у вас будет, будет 2 для третьего элемента впервая строка.

Затем в цикле проверьте и посмотрите, есть ли $currentItem в хеш-таблице.Если это так, напечатайте изображение с шагом $currentItem (и пересчитайте строку и столбец), а затем напечатайте $product.Если его нет в хеш-таблице, просто напечатайте $product как обычно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...