-2

我在数据库中有 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>

所以每个 4 产品<li>。我该如何做到这一点并知道这是来自 foreach 循环?

4

2 回答 2

2

您可以在 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标签。

于 2013-03-08T04:12:50.827 回答
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>"; 
          }
  ?>
于 2013-03-08T04:15:30.803 回答