如何将值与不同的给定值范围相关联

时间:2015-03-20 13:38:55

标签: php arrays

[编辑:有趣的是,帖子开头的“嗨/你好/问候”被过滤掉了;)]

我正在尝试找出执行以下操作的最佳方法:

我从数据库中获取应用程序中出现的TOP 5错误。其中一个字段是发生错误的次数。

我将这个TOP5显示在网页上的表格中。

我想要做的是根据错误的出现次数设置行背景颜色:

0-5:没有颜色

6-10:黄色

11-20:橙色

> = 21:红色

我目前所做的是:

  • 设置不同的阈值:

    $threshold1 = 6;
    $threshold2 = 11;
    $threshold3 = 21;
    
  • 为每种颜色设置一个数组:

    $warncolor = array(
        $threshold1 => '#ffe339',
        $threshold2 => '#FF9900',
        $threshold3 => '#ff2e2e'
    );
    
  • 然后使用($ row [3]是我从数据库中获取的值):

    if ($row[3] >= $threshold1 && $row[3] < $threshold2 ) {
        $color = $warncolor[$threshold1];
    } 
    elseif ($row[3] >= $threshold2 && $row[3] < $threshold3) {
        $color = $warncolor[$threshold2];
    }
    elseif ($row[3] >= $threshold3) {
        $color = $warncolor[$threshold3];
    }
    else {
        $color = '#FFFFFF';
    }
    
  • 然后我在表格行中使用$ color变量。

我觉得它可以大大简化...我在谷歌/ php手册上搜索了几个小时......并且无法想出更干净/更好/最佳的方式来做它。

所以我决定来这里寻求你的帮助。

提前谢谢你。 问候, SEB

2 个答案:

答案 0 :(得分:3)

我会使用这样的函数来获取颜色:

function getColor ($count)
{
    $threshold1 = 6;
    $threshold2 = 11;
    $threshold3 = 21;

    $warncolor = array(
        $threshold3 => '#ff2e2e',
        $threshold2 => '#FF9900',
        $threshold1 => '#ffe339'            
    );

    foreach ($warncolor as $warn => $value) {
        if ($count >= $warn) {
            return $value;
        }
    }

    return '#FFFFFF';
}

答案 1 :(得分:0)

这与marcosh的方法类似,但是我强迫你保持阈值和颜色同步 - 如果你需要为这些保持两个不同的位置,很可能它们可能会失去同步几年后和其他13次维护改变之后; - )

function getColor ($count)
{
   $colors = array( 
      21 => "#ff2e2e",
      11 => "#ff9900",
       6 => "#ffe339"    
    ); // note how thresholds and colours directly relate!

    foreach ($colors as $threshold => $col)
    {
        if ($threshold < $count) return $col;
    }

    return "#ffffff";
}