每3件物品的替代行颜色?

时间:2012-11-28 14:09:10

标签: php background-color alternate

我有一个无序列表,每行有3个项目(而不是默认值1)。现在我想要替换行颜色。我该怎么做?

所以基本上我想做这样的事情:

if ($listCount == 1, 2, 3 OR 7, 8, 9 OR 13, 14, 15) {
    $alternateRow = "rowOdd";
}
else {
    $alternateRow = "rowEven";
}

(我知道这是一个语法错误,只是试图解释)

我认为模数是可能的,但说实话,我真的不明白它是如何工作的。

5 个答案:

答案 0 :(得分:7)

确实,模数。您可以测试($listCount - 1) % 6 < 3

答案 1 :(得分:1)

用css完全做到这一点怎么样? http://css-tricks.com/how-nth-child-works/

答案 2 :(得分:1)

由于原始海报在模数上不清楚,我想帮助解释它是如何工作的,这样你就可以在下次出现需要时使用它。模运算符(%)通过确定两个操作数之间的除法的余数来工作。

模数的规则是:

if left < right: left % right = left
if left > right: left % right = remainder of left / right

例如:

 - 1  % 6  = 1 ( 1 < 6 so the answer is 1    ) 
 - 7  % 6  = 1 ( 7/6 = 1 with remainder of 1 ) 
 - 10 % 6  = 4 ( 10/6 = 1 remainder of 4     ) 
 - 6  % 6  = 0 ( 6/6 = 1 with 0 remainder    )

所以在你的情况下你会得到123(分别为1,2,3%6)和4,5,6%3会给你450.然后7,8,9%6会再给你123,10 ,11,12将再次是450,依此类推。所以你的代码会:

// check that list count is less than three but not = 0
// (only true when mod yields 1,2, or 3)
if($listCount % 6 < 3 && $listCount % 6 == 0){
  $alternateRow = "rowOdd";
} else {
  $alternateRow = "rowEven";
}

答案 3 :(得分:0)

int i = 0;
 $Value = "rowEven";
while ()
{
  while (i < 3)
  {
    $alternateRow = $value
    i++;
  }
  i = 0;
  if ($value == "rowOdd")
    $Value = "rowEven";
  else
    $Value = "rowOdd"
}

答案 4 :(得分:0)

或者像这样使用模数:

<?php

$numRecords=9;

for ($i = 0; $i < $numRecords; $i++)
{
 $className = "";
 if (($i % 3) == 0)
 {
  $className = "third";
  echo "i = " . $i;
 }
 else
 {
  $className = "other";
 }

}
?>