确定php while循环中的每个第三项?

时间:2011-01-28 22:59:38

标签: php html css while-loop html-lists

我试图从数据库中获取数据并将其列在<li>列表中。我试图找出每个第三个列表项并给它一个不同的李类?这是我的代码

<?php
while ($row = mysql_fetch_array($getupdates)){
?>
<li id="update" class="group">
   blah blah blah
</li>
<?php } ?>

所以基本上每三个项目我想给它一个不同的li类

<li id="update" class="group third">

5 个答案:

答案 0 :(得分:8)

在你的while循环中有一个计数器。我们称之为$i。在你的循环中,添加:

$i++;
if ($i % 3 == 0) {
   //do something you'd do for the third item
}
else { //default behavior }

答案 1 :(得分:2)

使用CSS3伪类属性选择器可以更轻松地完成此操作。像这样:

li:nth-child(3) {
  font-weight: bold;
}

如果您担心IE支持CSS3属性,可以使用http://selectivizr.com/

之类的polyfill轻松添加支持

答案 2 :(得分:1)

使用计数器,然后检查计数器的模3是否为0,以确定它是否为第三行。

<?php
$rowCount = 0;
while ($row = mysql_fetch_array($getupdates))
{
    $useDiffClass = (($rowCount++ % 3) == 0);    
    ?>
    <li id="update" class="group <?=($useDiffClass ? "third" : "");?>">
        blah blah blah
    <li>
    <?
}
?>

答案 3 :(得分:0)

<?php
$i = 0;
while (($row = mysql_fetch_array($getupdates)) !== false){
   echo '<li id="update" class="group';
   if ($i++ % 3 == 2) echo ' third';
   echo '">blah blah blah</li>';
}

答案 4 :(得分:0)

Modulus operator是要走的路。

但是你也可以使用CSS3属性来实现相同的效果而不使用PHP。