我正在尝试根据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;
}