PHP:根据结果设置表格单元格背景


PHP: Set table cell background based on result

我正在尝试根据csv(最初格式化的ping)的输出生成颜色。

我可以毫无问题地获得值,但是如果,如果,否则似乎不起作用。

if($min > 0.499 && $min <= 1) {$tcolor = $yellow;} elseif($min >= 1.0) {$tcolor = $red; } else { $tcolor = $white;}
if($avg > 0.499 && $avg <= 1) {$tcolor = $yellow;} elseif($avg >= 1.0) {$tcolor = $red; } else { $tcolor = $white;}
if($max > 0.499 && $max <= 1) {$tcolor = $yellow;} elseif($max >= 1.0) {$tcolor = $red; } else { $tcolor = $white;}
if($mdev > 0.499 && $mdev <= 1) {$tcolor = $yellow;} elseif($mdev >= 1) {$tcolor = $red; } else { $tcolor = $white;}
echo "<tr><td>$ip</td><td bgcolor='"$tcolor'">$min<br>$tcolor</td><td bgcolor='"$tcolor'">$avg<br>$tcolor</td><td bgcolor='"$tcolor'">$max<br>$tcolor</td><td bgcolor='"$tcolor'">$mdev</td></tr>";

编辑:正如许多人已经询问颜色代码一样,我将其列在代码上方

$yellow = "#FFFF66";
$red = "#FF0000";
$white = "#FFFFFF";

我看到的数字重叠,但我也尝试过使用 0.999 以获得相同的结果。

听起来你已经解决了它,但你应该考虑使用这样的函数,这样你就不必像你那样重复 if 语句。

<?php
    function setCellColor($value){
        $color = '#FFFFFF';
        if($value >= 0.5 && $value <= 1){
            $color = '#FFFF00';
        } else if($value > 1) {
            $color = '#FF0000';
        }
        return ' style="background: ' . $color . '" ';
    }
    echo '<tr><td>' . $ip . '</td><td ' . setCellColor($min) . '>' . $min . '</td><td ' . setCellColor($avg) . '>' . $avg . '</td><td ' . setCellColor($max) . '>' . $max . '</td><td ' . setCellColor($mdev) . '>' . $mdev . '</td></tr>';
?>

看看这个:

function build_td_with_style($value) {
    switch (true) {
        case $value > 0.5 && $value <= 1 :
            $class = 'yellow';
            break;
        case $value > 1 :
            $class = 'red';
            break;
        default : 
            $class = 'white';
    }
    return "<td class='{$class}'>{$value}</td>";
}
$tds = implode('', array_map("build_td_with_style", [$min, $avg, $max, $mdev]));
echo "<tr><td>{$ip}</td>{$tds}</tr>";

风格.css :

   .yellow {
       background-color: yellow;
   }
   .red {
       background-color: red;
   }
   .white {
       background-color: white;
   }