首先需要ul有1 li,每个ul有5 li

时间:2013-04-03 23:06:10

标签: php

我在PHP foreach循环中需要这种类型的结构。我试过这段代码:

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

我在循环中尝试了这个条件并且工作正常,但我需要1 li在第一次ul。

<?php
$counter = 1;
foreach( $myposts as $post ) :

  setup_postdata($post); 

  if ($counter % 5 == 1) {
    echo '<ul>';
  }
  echo '<li>testing ...</li>'

  if($counter % 5 == 0) {
    echo '</ul>';
  }
  $counter++;
endforeach;
?>

任何一个扩展我的逻辑??

1 个答案:

答案 0 :(得分:2)

这就是我提出的:

$myposts = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);

$counter = 0;
echo '<ul>';
foreach( $myposts as $k=>$post ) :
    //setup_postdata($post); 
    echo '<li>'.$post.'</li>';
    if($counter==0 || $counter==5){
        echo "</ul>".($k!=count($myposts)-1 ? "<ul>" : "");
        $counter = 0;
    }
    $counter++;
endforeach;
if($counter==5){
    echo '</ul>';
}

这是一个最大的误解,大多数人都懒得关闭最后一个标记(在你的情况下为ul),或者他们不应该打开一个新标记(在你的情况下为ul)。

P.S。我必须发表评论setup_postdata才能发挥作用。

注意:在数组中添加或删除元素不会影响1,5,5,...的结构(然后余数取决于剩下的内容)