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

时间:2014-12-04 20:04:36

标签: php html-table

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

我可以获得没有问题的值,但if,ifelse,else似乎没有用。

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,结果相同。

2 个答案:

答案 0 :(得分:2)

听起来你已经解决了,但你应该看看使用这样的函数,所以你不必像你那样重复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>';

?>

答案 1 :(得分:0)

检查出来:

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>";

style.css:

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