PHP循环拆分为4

时间:2013-08-15 12:19:20

标签: php html loops

我将如何实现此PHP任务?

我有一个无序的html列表和数组。 我的代码为数组中的每个项添加了列表标记,以创建一个大的无序列表

            <ul>
                 <?php foreach ($rows as $id => $row): ?>
                        <li><?php print $row ?></li>
                <?php endforeach; ?>
            </ul>

当前输出

            <ul>
                <li>01</li>
                <li>02</li>
                <li>.....</li>
                <li>.....</li>
                <li>15</li>
            </ul>

我想要的是拆分列表项,使它们以4个为一组作为子无序列表。例如,如果数字不能被4整除,则余数应该是最后的较小列表。

            <ul>
                <ul>
                    <li>01</li>
                    <li>02</li>
                    <li>.....</li>
                    <li>.....</li>
                </ul>
                <ul>
                    <li>05</li>
                    <li>06</li>
                    <li>.....</li>
                    <li>.....</li>
                </ul>
                <ul>
                    <li>09</li>
                    <li>10</li>
                </ul>
            </ul>

提前致谢。

5 个答案:

答案 0 :(得分:5)

<ul>
<?php foreach ($rows as $id => $row): ?>
    <?php if ($id > 0 && $id % 4 === 0): ?>
        </ul><ul>
    <?php endif ;?>
    <li><?php echo $row; ?></li>
<?php endforeach; ?>
</ul>

(请注意,如果$rows数组的键不仅仅是索引号,则需要维护自己的计数器变量。)

答案 1 :(得分:0)

<?php
$id=0;
foreach ($rows as $id => $row)
{
    $id+=1;
    if ($id % 4 == 0)
    {
         echo "<ul>";
    }

    echo "<li>$i</li>";

    if ($id % 4 == 0)
    {
         echo "</ul>";
    }
}

if ($id % 4 != 0)
{
    echo "</ul>";
}    
?>

答案 2 :(得分:0)

foreach ($rows as $id => $row) {
  if ($id % 4 == 0) {
    // do something
  }
}

答案 3 :(得分:0)

尝试这样的事情:

   <?php
                 $rows = array("2","3","5","6","8","9","0","3","5");
                 $i =0;
                  foreach ($rows as $id => $row): 
                  if($i % 4 == 0)
                  { echo "</ul><ul>";}
                  $i++;
                  ?>
                        <li><?php print $row ?></li>
                <?php endforeach; ?>
            </ul>

答案 4 :(得分:0)

最后这是我的解决方案。如果有多个项目不能被4整除,则此解决方案包括关闭标记的语句,例如,如果总共有五个项目。感谢大家,没有你的意见,我无法做到。

            $count;
            foreach ($rows as $id => $row)
                {
                    if ($count % 4 == 0)
                    {           
                        echo "<ul>";
                    }

                    echo '<li>' . $row . '</li>';

                    if ($count % 4 == 3 || $count == count($rows)-1)
                    {
                        echo "</ul>";
                    }
                    $count++;
                }