【问题标题】:Change color of result using PHP使用 PHP 更改结果的颜色
【发布时间】:2017-09-07 08:23:31
【问题描述】:

我目前正在制作一个页面,将数据从 mysql 数据库输出到使用 php 的页面,如下所示:

echo "<tr>";
echo "<td><span style='font-weight:bold; font-size:18px'>Physical</span></td><td><span style='font-size:18px;'>" . $row['attributePhy'] . "</span></td>";
echo "<tr>";
echo "<td><span style='font-weight:bold; font-size:14px;'>Jumping </span></td><td><span style='font-size:14px;'>" . $row['jumping'] . "</span></td>";
echo "<tr>";
echo "<td><span style='font-weight:bold; font-size:14px;'>Stamina </span></td><td><span style='font-size:14px;'>" . $row['stamina'] . "</span></span></td>";
echo "<tr>";
echo "<td><span style='font-weight:bold; font-size:14px;'>Strength </span></td><td><span style='font-size:14px;'>" . $row['strength'] . "</span></td>";
echo "<tr>";
echo "<td><span style='font-weight:bold; font-size:14px;'>Aggression </span></td><td><span style='font-size:14px;'>" . $row['aggression'] . "</span></td>";

但是我想要它,所以数字结果的颜色会根据数字的高低而变化,例如红色为60及以下,浅绿色为61至80,深绿色为81+

有没有办法对整个表执行此操作?上面的代码只是一个小例子,每一个都做 if 语句需要很长时间。

编辑:

我只想更改结果颜色,例如

<span style='font-size:14px;'>" . $row['aggression'] . "</span>
<span style='font-size:14px;'>" . $row['strength'] . "</span>

这将作为数据库的数字返回,这是需要更改颜色的位。 等等

【问题讨论】:

  • 只是结果,例如" . $row['aggression'] . "
  • 类似:echo "Aggression " . $row['aggression'] 。 "";
  • 第一部分是“标题”
  • $row['attributePhy'] 是否返回您要用于更改颜色的数字?
  • @WillParky93 是的

标签: php html mysql


【解决方案1】:

只需要一个条件语句: 在本例中,我将使用三元运算符:

function getColor($value){
    return ($value <= 60 ?
                'color: red;' 
                : 
                ($value > 60 && $value < 81  ?
                    'color: lightgreen;'
                    :
                    ($value >= 81 ?
                        'color: darkgreen' 
                        :
                        ''
                    )
                )
            );
}

你可以按如下方式使用它:

echo "<td><span style='font-size:18px;". getColor($row['attributePhy'])."'>" . $row['attributePhy'] . "</span></td>";

【讨论】:

  • 这很好用: echo "Physical " 。 $row['attributePhy'] 。 "";谢谢!
【解决方案2】:

试试这个功能:

function changecolor($val) {
if ($val <= 60) {
echo "<font color='red'>$val</font>";
}
elseif ($val >60 AND $val <80) {
echo "<font color='lightgreen'>$val</font>";
}
else
{
echo "<font color='darkgreen'>$val</font>";     
}
}

然后:

<span style='font-size:14px;'>" . changecolor($row['aggression']) . "</span>
<span style='font-size:14px;'>" . changecolor($row['strength']) . "</span>

【讨论】:

  • 这可行,但似乎将结果移出Here 行,您可以看到底部的 4 个结果已应用并已移动。
  • 你把它放在一个''标签里了吗?喜欢: " .changecolor($row['aggression']) ."
  • 是的,我用过这个:echo "Aggression " .改变颜色($row['aggression'])。 "";
  • 但是 OP 不需要if。阅读问题上面的代码只是一个小示例,为每个示例执行 if 语句需要很长时间。
  • @peak 你的&lt;tr&gt; 都没有关闭,这就是你遇到问题的原因。
【解决方案3】:

您可以将值传递给此实用函数:

你可以像这样:getColor($row['aggression'])getColor($row['strength'])

function getColor($value)
{
    $possibilities = [
        'red'         => 0,
        'light green' => 60,
        'dark green'  => 80
    ]; // Add all your possibilities with the lower end match here like 0, 60, 80...

    return array_search(max(array_intersect($possibilities, range(0, $value))), $possibilities);

}

echo getColor(11);  // red
echo getColor(61);  // light green
echo getColor(81);  // dark green
echo getColor(801); // dark green
echo getColor(80);  // dark green

这样使用:

echo "<td><span style='font-weight:bold; font-size:14px;background-color:" . getColor($row['aggression']) . ";'>Aggression </span></td><td><span style='font - size:14px;'>" . $row['aggression'] . "</span></td>";

说明:

  1. range 将创造一系列可能性
  2. array_intersect 返回可能性数组中的匹配项
  3. max 返回最大值
  4. array_search 获取匹配的密钥

【讨论】:

    猜你喜欢
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    • 2022-07-21
    相关资源
    最近更新 更多