使用li的div组数

时间:2013-03-08 04:05:11

标签: php html-lists grouping

我在数据库中有8个或更多产品:

<?php if (!empty($this->products)){ 
  echo "<ul>"; 
        foreach ($this->products as $product){ 
?>
    8 items inserted here
<?
        }
  echo "</ul>"; 
      }
php?>

所以我想要的是数据库中的8个或更多产品将被放置如下:

<ul>
  <li>
     <div>Product here</div>
     <div>Product here</div>
     <div>Product here</div>
     <div>Product here</div>
  </li>
  <li>
     <div>Product here</div>
     <div>Product here</div>
     <div>Product here</div>
     <div>Product here</div>
  </li>
</ul>

每个<li>中有4个产品。我该怎么做并知道这是来自foreach循环?

2 个答案:

答案 0 :(得分:2)

您可以使用the modulus operator in PHP跟踪每四种产品的打印/插入结束/打开li标记:

<?php 
  if (!empty($this->products)){ 
    echo "<ul>"; 
    $i = 1;
    foreach ($this->products as $product){ 
      if ($i % 4 == 1) echo "<li>";

      echo "<div>".$product."</div>";

      if ($i % 4 == 0) echo "</li>";

      $i++;
    }
    echo "</ul>"; 
  }
?>

例如,如果i最初为1,我们会在li内放置一个开头div标记和产品。然后我们增加i。当i达到值4(或4的任意其他倍数)时,我们要关闭li标记。在此之后,i将变为55 % 4 = 1,因此我们将再次打开另一个li代码。

答案 1 :(得分:0)

 <?php if (!empty($this->products)){ 
      echo "<ul>"; 
            $counter = 1;
            foreach ($this->products as $product){
                if($counter == 1) echo '<li>';
                echo $product;
                if($counter==4) {$counter=0; echo '</li>';}
                $counter++;

            }
      echo "</ul>"; 
          }
  ?>