请注意以下事项:
我希望每组中的每条记录与组中的其他记录具有相同的背景颜色,但是后面的分组背景颜色与之后的分组不同。所以,我想要实现的是:
......等等。因此,不是每个记录的bgcolor交替出现的典型交替行颜色,我希望每个组的bgcolor交替,而每组中的颜色保持一致。
我目前的逻辑是这样做的:
if($gameID != $previousGameID)
$rowColor = "#ffffff";
else
$rowColor = "#F0F0F0";
虽然该代码是PHP,但这个问题并不是PHP独有的,它只是一个逻辑问题,这就是我用PHP,C#和JS(我知道的3种语言)标记这个问题的原因。我上面的代码是错误的,因为它导致背景颜色为每个记录更改,而不是为每组记录。每个组中的记录具有相同的gameID,并且该游戏ID将与所有其他组不同。所以gameID是解决这个小谜题的关键部分,但我无法理解解决方案。
注意:您不能假设每个分组都有1或2条记录。虽然我的例子没有显示,但在极少数情况下,一组中会有3条记录(在这种情况下,所有3条记录都会有相同的游戏ID)。
有什么想法吗?
答案 0 :(得分:1)
当前逻辑的问题在于,即使$rowColor
未发生更改,您也始终会更改gameID
。
创建一个alternateColor()
函数,在调用时,会在灰色和白色之间更改$rowColor
。
然后将条件更新为
if($gameID != $previousGameID)
alternateColor();
然后使用更新的$rowColor
。
此解决方案适用于任何类型的ID(数字,字符串等)。一个简单的例子就是数字顺序ID,即:1,2,3等。在这种情况下逻辑可以是:
if ($gameID % 2 == 0)
$rowColor = "#ffffff";
else
$rowColor = "#F0F0F0";
即,基于ID为奇数或偶数的事实,选择相应的颜色。
更新:
关于顺序ID,我并不暗示您的ID是顺序的。我暗示如果,那么模数解决方案就足够了。 alternateColor()
函数方法适用于任何类型的ID。
作为alternateColor()
的示例,请考虑这一点( C#):
在逻辑所在的类中,创建实例方法AlternateColor
并确保您的rowColor
变量是实例级变量:
private string rowColor == "#ffffff"; // let's start with white
private void AlternateColor()
{
this.currentColor = this.currentColor == "#ffffff" ? "#F0F0F0" : "#ffffff";
}
现在,每次拨打AlternateColor
时,它都会在两种颜色之间交替rowColor
。这是在当前gameID
更改时完成的。
更新2 :
不确定以下PHP的正确性,但您应该明白这一点:
class Games {
private var $rowColor;
private function alternateColor(){
$this->$rowColor = ($this->$rowColor == "#ffffff" ? "#F0F0F0" : "#ffffff");
}
public function theFuncWhereYouOutputTheTable(){
...
if($gameID != $previousGameID)
$this->alternateColor();
// use $rowColor afterwards
...
}
}
答案 1 :(得分:1)
设置一个全局变量来存储第一种颜色,比如$ rowColor =" #ffffff"。 然后在循环中
if($gameId != $previousGameId)
{
alternateColor();
}
然后定义,
function alternate()
{
if($rowColor== "#ffffff")
{
$rowColor= "#FOFOFO";
}
else
{
$rowColor= "$ffffff";
}
}
这应该有用!!