PHP: $ değerine göre metin rengini değiştirme

10 Cevap php

Bir değişkene dayalı bir metnin rengini değiştirmek için en kolay yolu nedir?

Örneğin: $ var 1-5 arasında ise, yeşil. Portakal, 6-10 arasında. 11'den yüksek, Kırmızı.

10 Cevap

Basit bir çözüm böyle bir şey yapmak için olabilir ...

if ($var < 6)
    $style="0F0";
else if ($var < 11)
    $style="F50";
else
   $style = "F00";

?><div style="color:#<?php echo $style; ?>">blar</div>

Renk değerleri sabitler tarafından endeksli? Ben karma harita hazırlayacak

$colorMap[0] = '#00FF00'; //green
$colorMap[1] = '#0000FF'; //blue
$colorMap[2] = '#FF0000'; //red
$colorMap[3] = '#330000'; //dark red

ve benzerleri. Sonra CSS kullanın

<span style="color: <?php echo $colorMap[$var]; ?>;">desired color</span>

Ben CSS renkleri kullanmak ve aynı zamanda 11 numara sizin kuralları geçersiz cevapların çoğu yapma göre herhangi bir renk eşleşmiyor gerçeğini vurgulamak gerekir :)

<?php

$color=getColor(11);

function getColor($n){

    // Is number between 1 and 5?
    if($n>=1 && $n<=5) return "green";

    // Is number between 6 and 10?
    if($n>=6 && $n<=10) return "orange";

    // Is number greater than 11
    if($n>11) return "red";

    // Return default (black) for all other numbers
    return "black";

}

?>

<span style='color:<?=$color?>'>Text</span>

Sizin basit örneğin üçlü operatör.

  $color = ($var < 6) ? '#FF8000' :  (($var < 10) ? '#00FF00' : '#FF0000');

Ben CSS işi edelim ... rengini şekillendirme yerine inline CSS sınıfları kullanmak istiyorsunuz ...

<?php
$var = 5;
$class = (($var < 6) ? 'greenclass' : (($var < 11) ? 'orangeclass' : 'redclass' ))
?>
<span class="<?php echo $class?>">text</div>

Bu yanıtların hiçbiri beklediğiniz biriyseniz, size gerçekleştirmek için tam olarak ne yapmak istiyorlar? Eğer fazla bilgi verebilir misiniz?

Kimse bu oldukça esnek daha aralıkları ile çalıştığını varsayarak:

function getProperColor($range, $value)
{
    foreach($range as $key => $color)
    {
        if ($value <= $key)
            return $color;
    }
    return $color;
}

$colorRange = array(
    5 => 'green',
    10 => 'orange',
    11 => 'red'
);

for($i=-1;$i<16;$i+=2)
{
    echo "$i:" . getProperColor($colorRange, $i) . "\n";
}

Bu irade çıktı:

-1:green
1:green
3:green
5:green
7:orange
9:orange
11:red
13:red
15:red
function getProperColor($number)
{
    if ($var > 0 && $var <= 5)
        return '#00FF00';
    else if ($var >= 6 && $var <= 10)
        return = '#FF8000';
    else if ($var >= 11)
        return = '#FF0000';
}

Ve bu gibi kullanmak

<div style="background-color: <?=getProperColor($result['number'])?>;"><?=$result["title"]?></div>

Eğer senin tabloların bir dizi kullanmak için gidiyoruz eğer, aslında elseif ifadeleri kullanmak gerekir

 if ($var < 6) $color = '#00FF00';
elseif ($var < 10) $color = '#FF8000';
elseif ($var > 10) $color = '#FF0000';

Eğer tabloların bu üçlü gibi bir şey:

if ($var < 10) $color = '#FF8000';
if ($var < 6) $color = '#00FF00';
if ($var >= 10) $color = '#FF0000';

echo "<span style=\"color: $color;\">This text is colored.</span>";