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


How to create a php loop to print in specific pattern?

我想创建一个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>
$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>';
}

你可以使用模数

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

使用模运算符:

$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>';
    }
}

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

$i = 0; // Counting variable
foreach ($names as $name) {
  $i++; // Add one to counting variable  
}

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