2011-04-15 2 views
0

У меня есть цикл, который строит Еогеасп мне страницу продукта в основном это из ставит свои продукты в рядах 3.PHP цикл Еогеасп помощь

Смотрите код:

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 = array(
    'iamge1.png', 
    'image2.png, 
    'image3.png, 
    'image4.png, 
); 

Как я могу это достичь? Я несколько раз царапался в течение нескольких часов :(

+1

Таким образом, вы всегда будете иметь три элемента в каждом ряду? Но произвольно хотите добавить изображения в результаты (случайно, за исключением первой строки)? – zsalzbank

+0

yep вы суммировали то, что я хочу отлично! –

+0

Возможно, это ничего не связано, но ваш массив примеров выше, только первый элемент правильно процитирован. – Christian

ответ

0

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

<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

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

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

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

+0

Не могли бы вы дать мне пример хэш-таблицы, я никогда не слышал этого термина раньше или, может быть, даже пример цикла? даже если это псевдокод –

+0

@ sea_1987 hashtable == ассоциативный массив –

Смежные вопросы