使用变体

时间:2017-06-04 03:47:48

标签: javascript c# php logic

这是一个简单的逻辑问题,但我有心理障碍。我有以下几组行: enter image description here

请注意以下事项:

  • 第1组有2条记录
  • 第2组有2条记录
  • 第3组有1条记录
  • 第4组有2条记录
  • 第5组有1条记录
  • 第6组有2条记录

我希望每组中的每条记录与组中的其他记录具有相同的背景颜色,但是后面的分组背景颜色与之后的分组不同。所以,我想要实现的是:

  • 第1组中的两个记录都应具有白色背景色。
  • 第2组中的两个记录都应具有灰色背景色。
  • 第3组中的唯一记录应具有白色背景色。
  • 第4组中的两个记录都应具有灰色背景色。

......等等。因此,不是每个记录的bgcolor交替出现的典型交替行颜色,我希望每个组的bgcolor交替,而每组中的颜色保持一致。

我目前的逻辑是这样做的:

if($gameID != $previousGameID)
    $rowColor = "#ffffff";
else
    $rowColor = "#F0F0F0";

虽然该代码是PHP,但这个问题并不是PHP独有的,它只是一个逻辑问题,这就是我用PHP,C#和JS(我知道的3种语言)标记这个问题的原因。我上面的代码是错误的,因为它导致背景颜色为每个记录更改,而不是为每组记录。每个组中的记录具有相同的gameID,并且该游戏ID将与所有其他组不同。所以gameID是解决这个小谜题的关键部分,但我无法理解解决方案。

注意:您不能假设每个分组都有1或2条记录。虽然我的例子没有显示,但在极少数情况下,一组中会有3条记录(在这种情况下,所有3条记录都会有相同的游戏ID)。

有什么想法吗?

2 个答案:

答案 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";
    }
}

这应该有用!!