PHP:将单个数组输出为多个列表


PHP: Output single array as multiple lists

我有一个未知长度的数组:

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

我需要将这个数组输出为多个列表,其中每3个数组条目都会创建一个新的列表。

<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
</ul>
<ul>
  <li>4</li>
  <li>5</li>
  <li>6</li>
</ul>
<ul>
  <li>7</li>
  <li>8</li>
</ul>

请注意,即使最后一个列表不包含3个列表项,我也需要关闭它。

这是我的尝试:

<?php for ($i = 0; $i < count($rows); ++$i): ?>
  <?php if (($i % 3) == 0): ?>
    <ul>
  <?php endif; ?>
    <li><?php print $rows[$i]; ?></li>
  <?php if (($i % 3) == 2): ?>
    </ul>
  <?php endif; ?>
<?php endfor; ?>

您可以使用array_chunk执行此任务。三人一组:

$array = range(1, 8);
$unknown_length = array_chunk($array, 3); // cut by batches of three
foreach($unknown_length as $ul) {
    echo '<ul>';
    foreach($ul as $li) {
        echo "<li>$li</li>";
    }
    echo '</ul>';
}

样本输出

这应该适用于您:

(在这里,我用array_chunk()将数组分成3块。然后,我用foreach循环遍历每个innerArray,并用implode()打印列表)

<?php
    $array = array('1', '2', '3', '4', '5', '6', '7', '8');
    foreach(array_chunk($array, 3) as $chunk) 
        echo "<ul><li>" . implode('</li><li>', $chunk) . "</li></ul>";
?>

尝试foreach循环

$array = array('1', '2', '3', '4', '5', '6', '7', '8');
$i=1;
foreach($array as $a) {
  if($i == 1) echo '<ul>';
  echo '<li>'.$a.'</li>';
  if($i % 3 == 0) {
    echo '</ul>';
    echo '<ul>';
  }
  if($i == count($array))
    echo '</ul>';
  $i++;
}

输出:-

<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<ul>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
<ul>
<li>7</li>
<li>8</li>
</ul>
$i = 1;
foreach($array as $value){
   switch($i){
      case 1:
         echo '<ul>' 
               . '<li>' . $value . '</li>';
         break;
      case 2:
         echo '<li>' . $value . '</li>';
         break;
      case 3:
         echo '<li>' . $value . '</li>'
              . '</ul>';
         $i = 0;
         break;
   }
   $i++;
}
$array = array('1', '2', '3', '4', '5', '6', '7', '8');
echo "<ul>";
foreach($array as $key => $val){
    echo "<li>$val</li>";
    if(($key+1)%3 == 0){
        echo "</ul><ul>";       
    }
}
echo "</ul>";

演示

$array = array('1', '2', '3', '4', '5', '6', '7', '8');
        $n = count($array);
        $i=1;
        $list = '';
        foreach ($array as $val) {
            if($i==1){
                $list .='<ul>';
            }
                $list .='<li>'.$val.'</li>';
            if($i%3==0){
                $list .='</ul>';
                $list .='<ul>';
            }
            if($n==$i){ $list .='</ul>'; }
            $i++;
        }
        echo $list;

为什么不在HTML中使用类似模板的替代循环语法?(当然,如果你使用的是某种"视图")

<? for ($i=0; $i<count($a); $i+=3): ?>
    <ul>
    <? for ($j=$i; $j<min(count($a), $i+3); $j++): ?>
        <li><? echo $a[$j]; ?></li>
    <? endfor; ?>
    </ul>
<? endfor; ?>