【问题标题】:split li elements in group of 3 [closed]在 3 组中拆分 li 元素[关闭]
【发布时间】:2013-11-28 09:35:22
【问题描述】:

我在li 中有元素,它们是使用 for 循环生成的

但我想将它们分成 3 个一组

喜欢,但我无法使用 for 循环来实现这一点,所以我使用了手动开关盒,例如, 将 row1 应用于 1 到 3 之间的案例,而不是将 class row2 应用于 4 到 6 之间的案例,但如果 有很多产品会增加li,我需要为每个组编写switch case,那么有什么办法可以编写动态for循环或switch case?

<li class="row1"></li>
<li class="row1"></li>
<li class="row1"></li>

<li class="row2"></li>
<li class="row2"></li>
<li class="row2"></li>

<li class="row3"></li>
<li class="row3"></li>
<li class="row3"></li>

【问题讨论】:

    标签: php for-loop switch-statement grouping


    【解决方案1】:

    你可以这样工作。

     <?php for( $i=1; $i<=length of your product;i++)
        {
        $k=0;
            while($k<=3)
        { ?>
            <Li class="row<?php echo $i;?>"></li>
    
        <?php $k++;
        }
        } ?>
    

    【讨论】:

    • 在这种情况下将有四个 &lt;li&gt; 而不是 3 因为你有 $k&lt;=3 但它应该是 $k &lt; 3 因为你使用零作为 $k$k 应该是一: )
    • 使用 $k
    【解决方案2】:

    你可以用 2 个 for 循环来做到这一点,例如:

    for ($row_id = 1; $row_id <= 3; $row_id++) { // row ids 
      for ($i = 1; $i <= 3; $i++) { // number of list elements you want with each row id
        echo '<li class="row' . $row_id . '"></li>';
      }
    }
    

    或者如果您真的希望它们分成三个单独的列表:

    for ($row_id = 1; $row_id <= 3; $row_id++) { // row ids 
      echo '<ul>';
      for ($i = 1; $i <= 3; $i++) { // number of list elements you want with each row id
        echo '<li class="row' . $row_id . '"></li>';
      }
      echo '</ul>';
    }
    

    不是 100% 确定您的问题措辞是什么。

    【讨论】:

      【解决方案3】:

      M 不是开关的忠实粉丝,我更喜欢 MOD 功能来实现它,如下所示

          echo "<ul>";
          <?php
          $obj = 0;
          while(//condition)
          {
              echo "<Li class=row.'$obj'></li>";
              if(++$obj % 3 == 0)
              {
                 echo"</ul><ul>"; //create new ul list
      
              }
          }
      ?>
      </ul>
      

      【讨论】:

        【解决方案4】:

        试试这样:

        <?php 
        $k = 0; 
        
        for ($i=1; $i < 12; $i++) { 
        
        if($i%3==0){ $k++; echo " $k multiple times <br/>"; }
        
        }
        
        ?>
        

        【讨论】:

        • $i 应该是一而不是零。 $k++; 也应该是 $j++
        • 对不起,复制代码时出错。
        【解决方案5】:

        试试这个

        <?php
        $k = array('a','b','d','f','bh','r','rr','rrr','eee','www','wwwww','qww','qwq','wqq','wq','qwq','wqw','wqeqwe','aew','qq','wqq','wqwq');
        ?>
        <ul>
        <?php
        $s=1;
        for($i=0;$i<count($k)-1;$i++)
        {
            if($i % 3==0){
                $s++; 
            }
            ?>
            <li class="<? echo "row".$s?>"><?=$k[$i]?></li>
            <?php   
        }
        ?>
        
        </ul>
        

        在页面源代码中看到这样的输出

        <ul>
            <li class="row2">a</li>
                <li class="row2">b</li>
                <li class="row2">d</li>
                <li class="row3">f</li>
                <li class="row3">bh</li>
                <li class="row3">r</li>
                <li class="row4">rr</li>
                <li class="row4">rrr</li>
                <li class="row4">eee</li>
                <li class="row5">www</li>
                <li class="row5">wwwww</li>
                <li class="row5">qww</li>
                <li class="row6">qwq</li>
                <li class="row6">wqq</li>
                <li class="row6">wq</li>
                <li class="row7">qwq</li>
                <li class="row7">wqw</li>
                <li class="row7">wqeqwe</li>
                <li class="row8">aew</li>
                <li class="row8">qq</li>
                <li class="row8">wqq</li>
        
        </ul>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-27
          • 1970-01-01
          • 2020-09-06
          相关资源
          最近更新 更多