определить каждый третий элемент в цикле php while? - PullRequest
2 голосов
/ 29 января 2011

я пытаюсь получить данные из базы данных и вывести их в список <li>.я пытаюсь выяснить каждый третий элемент списка и дать ему другой класс 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 ]

8 голосов
/ 29 января 2011

В вашем цикле есть счетчик.Давайте назовем это $i.Добавьте в свой цикл это:

$i++;
if ($i % 3 == 0) {
   //do something you'd do for the third item
}
else { //default behavior }
2 голосов
/ 29 января 2011

Вы могли бы сделать это намного проще, используя селекторы атрибутов псевдокласса CSS3.Примерно так:

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

Если вас беспокоит поддержка IE3 атрибутов CSS3, вы можете легко добавить поддержку с помощью многогранника, например http://selectivizr.com/

1 голос
/ 29 января 2011

Используйте счетчик, а затем просто проверьте, является ли модуль 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>
    <?
}
?>
0 голосов
/ 29 января 2011

Оператор модуля - это путь.

Но вы также можете использовать атрибуты CSS3 для достижения того же эффекта без использования PHP.

0 голосов
/ 29 января 2011
<?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>';
}
...