2015-03-12 3 views
0

Мне нужно иметь несколько разных div div на моем сайте, и теперь я печатаю классы с простым циклом PHP. Сначала он отлично работает для нескольких первых div, но после этого он не работает.PHP каждый n-й div

Вот ситуация, я хочу

<div class="row"> 
    <div class="small special"></div> 
    <div class="small special"></div> 
    <div class="large"></div> 
</div> 
<div class="row"> 
    <div class="small special"></div> 
    <div class="large"></div> 
    <div class="small"></div> 
</div> 
<div class="row"> 
    <div class="large"></div> 
    <div class="small"></div> 
    <div class="small"></div> 
</div> 
<div class="row"> 
    <div class="small"></div> 
    <div class="small"></div> 
    <div class="large"></div> 
</div> 
<div class="row"> 
    <div class="small"></div> 
    <div class="large"></div> 
    <div class="small"></div> 
</div> 

И оттуда на это продолжает использовать тот же шаблон, как последние 2 ряда. Таким образом, основной div перемещается справа налево на каждой строке. Специальные divs выходят из цикла. Вот мой текущий php:

<div class="row"> 
    <div class="small special"></div> 
    <div class="small special"></div> 
    <?php while loopstuff here ?> 
    <?php 
     if ($i == 0 || $i == 1 || ($i %3) == 0) : 
      $size = "large"; 
     else : 
      $size = "small"; 
     endif; 
    ?> 
    <?php if ($i == 1) : ?> 
     <div class="small special"></div> 
    <?php endif; ?> 
    <div class="<?php echo $size; ?>"></div> 
    <?php if ($i == 0 || $i == 2 || ($i % 3) == 0) : ?> 
     </div><!-- .row --> 
     <div class="row"> 
    <?php endif; ?> 
    <?php $i++; ?> 
<?php endwhile; // end of the loop. ?> 
</div> 

Первые две строки отлично работают, но строки после этого печатают один col в строке или двух. Так что моя проблема в этом ($ i% 3) == 0) Я считаю.

ответ

0

Настраиваемый рабочий прототип:

<?php 
    $iTotalRowCount = 10; 
    for($i = 0; $i < $iTotalRowCount; ++$i) 
    { 
     $aPositions = array(); 
     if(($i % 3) === 0) 
     { 
      $aPositions = array('small', 'small', 'large'); 
     } 
     else if(($i % 3) === 1) 
     { 
      $aPositions = array('small', 'large', 'small'); 
     } 
     else if(($i % 3) === 2) 
     { 
      $aPositions = array('large', 'small', 'small'); 
     } 
     $iCountPositions = count($aPositions); 
     for($k = 0; $k < $iCountPositions; ++$k) 
     { 
      echo '<div class="' . $aPositions[ $k ] . '">' . $aPositions[ $k ] . '</div>'; 
     } 
     echo '<br />'; 
     echo 'Set end.'; 
     echo '<br />'; 
    } 
?>