0

こんにちは:)私は本当にここであなたの助けが必要です。アイテムのリストを動的に生成しますが、各アイテムを個別<li>に配置する代わりに、次のようなものを取得したいと思います。

<ul>
   <li>
      <div>$pt</div>
      <div>$pt</div>
      <div>$pt</div>
   </li>
   <li>
      <div>$pt</div>
      <div>$pt</div>
      <div>$pt</div>
   </li>
</ul>

これが私が持っているコードです:

<ul class="some-ul-class">
    <?php $itemCount = 3; ?>
       <?php $i=0; foreach ($p->getItems() as $pt): ?>
           <?php if ($i++%$itemCount==0): ?>
              <li class="item">
           <?php endif; ?>
                 <div>$pt</div>
              </li>
       <?php endforeach; ?>
</ul>

しかし、その結果、次のような構造になります。

<ul>
   <li>
      <div>$pt</div>
   </li>
   <div>$pt</div>
   <div>$pt</div>

   <li>
      <div>$pt</div>
   </li>
   <div>$pt</div>
   <div>$pt</div>
</ul>

助けてくれてありがとう

4

4 に答える 4

2
<ul class="some-ul-class">
<?php $itemCount = 3; ?>
   <?php $i=0; foreach ($p->getItems() as $pt): ?>
       <?php if ($i%$itemCount==0): ?>
          <li class="item">
       <?php endif; ?>
             <div>$pt</div>
       <?php if ($i%$itemCount==2): ?>
          </li>
       <?php endif; $i++; ?>
   <?php endforeach; ?>
</ul>

あなたはこれを試すことができます。

于 2012-06-20T13:58:00.983 に答える
1
<ul class="some-ul-class">
  <?php $itemCount = 3;
    $i=0;
    foreach ($p->getItems() as $pt):
      if ($i%$itemCount==0):
        echo '<li class="item">';
      endif;
        echo "<div>$pt</div>";
      if ($i%$itemCount==2):
        echo '</li>';
      endif; $i++;
    endforeach; ?>
</ul>
于 2012-06-20T13:57:19.470 に答える
0

次のようなものを試してください。

<ul class="some-ul-class">
    <?php $itemCount = 4; ?>
    <li>
    <?php $i = 1; foreach ($p->getItems() as $pt): ?>
        <?php if ( $i % $itemCount == 0): ?>
            </li><li>
        <?php endif; ?>
        <?php $i++; ?>
        <div><?php echo $pt; ?></div>
    <?php endforeach; ?>
     </li>
</ul>

これにより、以下が生成されます。

<ul class="some-ul-class">
    <li>
        <div>1</div>
        <div>2</div>
        <div>3</div>
    </li><li>
            <div>4</div>
            <div>5</div>
            <div>6</div>
    </li>
</ul>

デモ

于 2012-06-20T13:56:48.830 に答える
0

コンテナ内のアイテムをネストするには多次元配列が必要なため、コードはLIでネストされたDIVSを実現しません。解決策は、最初のDB結果セットを配列チャンクを持つチャンクに分割することです。

これにより、配列(1,2,3,4,5,6)が([0] => array(1,2,3)、[2] => array(4,5,6)に分割されます。

以下のループを実行すると、3つのネストされたDIVを持つ2つのLIが得られます。コードはテストされていませんが、操作可能なものである必要があります。

<?php 

$items = array(1,2,3,4,5,6,8,9,10,11,12,13,14,15);         
// Your initial item array

$rows = 3;                           
// Number of rows in each li 

$items = array_chunk($items, $rows); 
// Final nested array in blocks of 3

if ($items) {       
    echo "<ul class='some-ul-class'>\n";        
    foreach ( $items as $item ) {           
        echo "<li class='items'>\n";            
        foreach ($item as $divs) {
            echo "<div>{$divs}</div>\n";
        }           
        echo "</li>\n";             
    }       
    echo "</ul>\n";
}

?>
于 2012-06-20T14:10:00.603 に答える