如何创建一个php循环以特定模式打印?

时间:2013-10-19 02:14:57

标签: php loops

我想创建一个PHP循环,以便它应该读取一个名称数组并以特定模式打印它,以便在每4条记录上,它应该关闭并重新打开新的UL元素。所以一般情况下应该如下:

$names = array('Name 1', 'Name 2', 'Name 3', 'Name 4', 'Name 5', 'Name 6', 'Name 7', 'Name 8', 'Name 9');

这是我拥有的数组,我想创建一个循环,所以它应该像这样打印

<ul>
    <li>Name 1</li>
    <li>Name 2</li>
    <li>Name 3</li>
    <li>Name 4</li>
</ul>

<ul>
    <li>Name 5</li>
    <li>Name 6</li>
    <li>Name 7</li>
    <li>Name 8</li>
</ul>

<ul>
    <li>Name 9</li>
</ul>

4 个答案:

答案 0 :(得分:0)

您需要在循环中添加一个变量以用作计数器。有一段代码可以在每次迭代时增加它的数量。然后你可以添加一个if语句来检测某些数字(在这种情况下可以被4整除)并触发那些列表标签以正确的间隔输出。这是一个计数器的例子:

$i = 0; // Counting variable

foreach ($names as $name) {

  $i++; // Add one to counting variable  

}

始终记得在开始时将计数变量设置为零,否则它可能不想增加(因为你不能将其添加到任何东西)。此外,如果您在页面上的多个计数器中使用相同的变量名称,则无论如何都需要重置它们,否则该数字将在错误的上下文中重复使用。

答案 1 :(得分:0)

$count = 0;
foreach ($names as $key => $value) {
    if ($count%4 == 0) {
        print '<ul>';
    }

    print "<li>$value</li>";

    if ($count%4 == 3) {
        print '</ul>';
    }
    $count++;
}
if (count($names)%4 != 0) {
    print '</ul>';
}

答案 2 :(得分:0)

您可以使用模数

foreach($names as $key => $name) {
 if ($key % 4 == 0) echo "<ul>"; 
 echo "<li>" . $name . "</li>";
 if ($key % 4 == 0) echo "</ul>";
}

答案 3 :(得分:0)

使用模数运算符:

$names = array('Name 1', 'Name 2', 'Name 3', 'Name 4', 'Name 5', 'Name 6', 'Name 7', 'Name 8', 'Name 9');
$counter = 0;
foreach($names as $name){
    $counter++;
    if($counter % 4 == 1){
        echo '<ul>';
    }
    echo '<li>'.$name.'</li>';
    if($counter % 4 == 0){
        echo '</ul>';
    }
}