-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のモジュラス演算子を使用して、 li4つの製品ごとに終了/開始タグの印刷/挿入を追跡できます。

<?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。値(または他の4の倍数)にi達したら、タグを閉じます。その後、、、になりますので、もう一度別のタグを開きます。4lii55 % 4 = 1li

于 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 に答える