[编辑:有趣的是,帖子开头的“嗨/你好/问候”被过滤掉了;)]
我正在尝试找出执行以下操作的最佳方法:
我从数据库中获取应用程序中出现的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
答案 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";
}