PHP:根据 $value 更改文本的颜色

Posted

技术标签:

【中文标题】PHP:根据 $value 更改文本的颜色【英文标题】:PHP: Change color of text based on $value 【发布时间】:2011-02-17 18:02:47 【问题描述】:

根据变量更改文本颜色的最简单方法是什么?

例如:如果 $var 介于 1-5 之间,则为绿色。 6-10 之间,橙色。大于 11,红色。

【问题讨论】:

有趣的是,当答案如此相似时!我刚刚注意到我的和 sshow 的(除了功能部分和橙色十六进制)完全相同:) @Kevin,这个问题变成了一场噩梦。我正在对所有不符合您的规则的人投反对票,但在一天结束时,您应该编辑您的问题或承认大多数答案都是错误的——包括绿色勾号的答案。只是为了让您(和其他人)理解“大于 11”与“大于或等于 11”不同。由于其他明显的原因,一些答案是错误的。但是,嘿,这是一个公共问答网站,我们应该期待这种行为。 @Zaf,我意识到从技术上讲,他们错了,因为 >= 11。但事实仍然是他们回答了我的问题(这是以“?”结尾的行)。我的例子只是为了提供更多细节并促进适用于我情况的答案。 sshow 回答得很好,你只是嫉妒。 @Kevin 一点也不嫉妒 sshow,如果我是他,我会改变他的答案,否则这不是一个很好的记录。我嫉妒你的金徽章;) 我愿意用我的金徽章换取你的知识! :) 【参考方案1】:
function getProperColor($number)

    if ($var > 0 && $var <= 5)
        return '#00FF00';
    else if ($var >= 6 && $var <= 10)
        return = '#FF8000';
    else if ($var >= 11)
        return = '#FF0000';

并像这样使用它

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

【讨论】:

对于这样的简单操作来说,函数是否矫枉过正? 如果您像往常一样为函数保留一个外部文件,我会说这是一种更易读的方式。 就清晰度和组织而言,函数可能是您的最佳选择。 你是对的。我传递了几个变量,这个函数绝对是解决方案! 难以置信 - 错误的答案会得到绿色勾号!此答案已被编辑,仍然不符合 OP 规则。【参考方案2】:
$color = "#000000";

if (($v >= 1) && ($v <= 5))
   $color = "#00FF00";
else if (($v >= 6) && ($v <= 10))
   $color = "#FF9900";
else if ($v >= 11)
   $color = "#FF0000";

echo "<span style=\"color: $color\">Text</span>";

【讨论】:

您在第二个 if 块中在 $v$var 之间切换。 ;) +1 这可能是最好的解决方案,并且没有任何“开放式”评估(例如在我的评估中,它很乐意取小于 1 的值并仍然使用绿色)。 此答案的“大于或等于 11”为红色。与“大于”不同.. 那么 $v 等于 11 的情况是什么?又黑了? @LukeN 我们不知道。 OP 未能澄清当 n=11 时会发生什么。【参考方案3】:

颜色值是否由常量索引?我会准备哈希图

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

等等。然后使用 CSS

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

【讨论】:

【参考方案4】:

如果要使用一组 if 语句,则需要实际使用 elseif 语句,

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

【讨论】:

如果 $var == 10 这不会设置 $color,虽然你是对的,但正如我的回答一样,elseif 比 if 的三个更好。【参考方案5】:

我将使用 CSS 颜色,并强调数字 11 不会根据您的规则映射到任何颜色,这使得大多数答案无效:)

<?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>

【讨论】:

【参考方案6】:

类似于这三个 if 语句:

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

【讨论】:

要小心——在这个特定的例子中,从 0 到 5 的任何值(嗯,从技术上讲,-infinity 到 5,但你明白了)将始终被分配 '#FF8000' (我没有' t相信是正确的)。 任何小于 5 的东西都不起作用,因为它会被覆盖,因为小于 5 的东西都会小于 10。可以使用 elseif 来摆脱这种情况 我的原始答案是 if 语句的顺序会导致问题,其中 【参考方案7】:

一个简单的解决方案可能是做这样的事情......

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

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

【讨论】:

【参考方案8】:

您的简单示例的三元运算符。

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

【讨论】:

【参考方案9】:

我会使用 CSS 类而不是内联样式颜色...让 CSS 工作...

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

如果这些答案都不是您所期望的,那么您到底想完成什么?你能提供更多信息吗?

【讨论】:

【参考方案10】:

我找到了这个插件:

http://www.jnathanson.com/blog/client/jquery/heatcolor/index.cfm#examples

【讨论】:

【参考方案11】:

假设一个使用范围比这更灵活:

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

这将输出:

-1:green
1:green
3:green
5:green
7:orange
9:orange
11:red
13:red
15:red

【讨论】:

凯文,我找到了这篇文章,所以其他人也可以。所有的建议都是关于使用 if 语句。以为我会使用范围共享,从而将数据与逻辑分开。是【参考方案12】:
<?php
$var='2';
?>
 <html>
  <body>
   <p>Hello Welcome.I am
     <?php 
      if($var>0 && $var<=5)
        echo '<p style=color:Green;>';
      else if($var>=6 && $var<= 10)
        echo '<p style=color:orange;>';
      else
         echo '<p style=color:red;>';
?>
        I am a Developer.
     </p>
     </body>

【讨论】:

【参考方案13】:

为什么不用开关盒?这样会更干净

   $color = "";
   switch(true)
      case ($var > 0 && $var <= 5):
            $color = '#00FF00';
      break;
      case ($var >= 6 && $var <= 10):
            $color = '#00FF00';
      break;
      case ($var >= 11):
            $color = '#00FF00';
      break;
      default:
            $color = '#000000';

【讨论】:

可能……很难说我 8 年前的想法了。 只是我看到这篇文章时的一个想法,也许它会帮助一些来到这个页面的人(就像我昨天所做的那样:))【参考方案14】:
$color="green";
$text="foo";
echo wrapColor($color, $text);

function wrapColor($color, $text)
return "<span style=color:$color>$text</span>";

【讨论】:

这个例子并没有真正解决@Kevin Brown 的问题;它总是会打印出&lt;span style=color:green&gt;foo&lt;/span&gt;(这不是他想要的)

以上是关于PHP:根据 $value 更改文本的颜色的主要内容,如果未能解决你的问题,请参考以下文章

根据背景图像/颜色更改文本颜色

如何根据Angularjs中的背景颜色自动更改文本颜色? [复制]

Flutter Forms:有没有办法根据某些条件更改输入文本的颜色?

如何根据结果更改文本标签颜色?

如何根据位置更改 UIPickerView 标题文本颜色

如何根据颜色Android工作室更改按钮文本[关闭]