使用PHP生成复杂的无序列表

时间:2011-10-07 14:42:33

标签: php

我必须在上面的无序列表中显示一些信息:

<ul>
  <li class="first">...</li>
  <li>...</li>
  <li class="last">...</li>

  <li class="first">...</li>
  <li>...</li>
  <li class="last">...</li>

  <li class="first">...</li>
  <li>...</li>
  <li class="last">...</li>

  ...
</ul>

我需要使用PHP打印它。

我的问题是如何在每三个结果之后为第一个la last元素设置该类?

谢谢。

3 个答案:

答案 0 :(得分:2)

在转储结果时,请使用计数器。

for ($i = 0; $i < $items; $i++){
}

然后,您可以通过MOD计数器查看您所在的元素。 e.g:

for ($i = 0; $i < $items; $i++){

  // start with no class applied
  $className = '';

  // 0 / 3 = 0, remainder of 0
  // 3 / 3 = 1, remainder of 0
  // etc.
  if ($i % 3 == 0) $className = 'first';

  // 2 / 3 = 0, remainder of 2
  // 5 / 3 = 1, remainder of 2
  // etc.
  else if ($i % 3 == 2) $className = 'last';

  // print the element, and any class that needs to be applied
  echo '<li class="' . $className . '">...</li>';
}

答案 1 :(得分:1)

像这样......

<ul>
<?
    $classes = array('first', '', 'last');
    for ($i = 0; $i < count($myResults); $i++) :
        $class = $classes[$i % 3];
?>        
<li class="<?=$class?>><?=$myResults[$i]?></li>
<?
    endfor;
?>
</ul>

答案 2 :(得分:0)

我假设您正在使用数组:

foreach($array as $index=>$value){
    $class = "";
    if($index%3 == 0){
         $class = "first";
    }
    if($index%2 == 0){
         $class = "last";
    }
}