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 的 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 回答