【问题标题】:Change td bg color based on php echo value根据 php echo 值更改 td bg 颜色
【发布时间】:2017-08-19 16:45:34
【问题描述】:

我在 td 元素中使用 php echo 打印了具有百分比变化值的表格行。我想根据 php echo 值更改背景颜色。即如果值 >= 20 % -> 红色,值 0-19% -> 黄色和值 绿色。

如果包含值(不带 %),则为 td 元素着色的代码:

<td <?php if($array_select[array_keys($array_select)[0]] >= 2): ?> 
style="background-color:#F78181; text-align: center;" 
<?php endif; ?> 
style=" background:#dcddc0 url('cell-grey.jpg');
border-color: #999999;"><?php echo $array_select[array_keys($array_select)[0]];?></td>

这里不工作:

<td style=" background:#dcddc0 url('cell-grey.jpg');
<?php if($change[array_keys($change)[0]] >= 20): ?> 
style="background-color:#F78181; text-align: center;" 
<?php endif; ?> 
border-color: #999999;"><?php echo "${change[array_keys($change)[0]]}%";?></td> 

更新的代码给出了错误的答案:

$value2 = $change[array_keys($change)[2]];
if($value2 >= 20){
    $Style2 = 'style="background-color:#FF0000; text-align:center;border-width: 2px;padding: 8px; text-align: center;border-style: solid; border-color: #999999"';
}elseif($value2 > 0 && $value2 < 20){
    $Style2 = 'style="background-color:#FFFF00; text-align:center;border-width: 2px;padding: 8px; text-align: center;border-style: solid; border-color: #999999"';
}elseif($value2 <= 0){
    $Style2 = 'style="background-color:#009933; text-align:center;border-width: 2px;padding: 8px; text-align: center;border-style: solid; border-color: #999999"';
}

<td <?php echo $style2;?>><?php echo $change[array_keys($change)[2]];?>%</td>

【问题讨论】:

  • php 代码错误if(change[array_keys($change)[0]]
  • 所以,这几乎是不可能的,因为我们不知道您的 $change$array_select 数组包含什么,所以我们是在黑暗中拍摄。
  • 更好的办法是在 HTML 的 outside 变量中设置样式,然后简单地将 $style 回显到 HTML 中,而不是混入其中的逻辑使用 HTML,它会变得混乱。
  • 请包含更多代码以显示您正在使用的循环。还请包括您正在使用的输入数据。向我们展示$change$array_select 以及其他任何必不可少的内容。 Sunil 的答案不是 DRY,应该有一个 else,并且内联样式看起来很乱,就像在 php 标签中跳进跳出一样。
  • @SamadhanGaikwad $Style2$style2 之间存在差异。请更正此错字(仅选择一个区分大小写的变量名称)并在您的更新中包含:$change$array_select 的值,以便我们可以为您提供一种简洁且周到的方式来编码您的项目。当前的答案没有使用最佳实践。

标签: php html css


【解决方案1】:
<?php
$value = $array_select[array_keys($array_select)[0]];
if($value >= 20){
    $style = 'style="background-color:#FF0000; text-align: center;border-color: #999999"';
}elseif($value > 0 && $value < 20){
    $style = 'style="background-color:#FFFF00; text-align: center;border-color: #999999"';
}elseif($value <= 0){
    $style = 'style="background-color:#009933; text-align: center;border-color: #999999"';
}
?>
<td <?php echo $style;?>><?php echo $array_select[array_keys($array_select)[0]];?>%</td>

首先将你的值保存在变量中并在应用之前检查/比较值,并根据条件在php变量中创建样式代码。现在在最终的 html 代码中应用这两个变量。

【讨论】:

  • 很好的解释,但我很难应用到所有td 元素。如上代码仅用于数组中的第一个值。我再次添加了相同的代码并更改为 $value2 = $array_select[array_keys($array_select)[1]];$value2$style2&lt;?php echo $style2;?&gt; 作为第二个值,但它显示错误:Notice: Undefined variable: style2 我将不得不重复上述代码,其余 3 个元素的更改要多 3 次.还有第二个数组有 4 个需要突出显示的值。我们可以对 2 个数组使用 2 个时间码重复突出显示吗?否则需要重复 8 次。
  • 请添加带有数组值 $array_select 的完整代码,并将上述代码添加到 $array_select 的 foreach 中。但有关更多信息,请发布完整代码。谢谢
【解决方案2】:

根据您提供给我们的信息,我认为这应该可行:

<td style=" background:#dcddc0 url('cell-grey.jpg');
  <?php if($change[array_keys($change)[0]] >= 20): ?> 
    background-color:#F78181; text-align: center; 
  <?php endif; ?> 
  border-color: #999999;">
      <?php echo "${change[array_keys($change)[0]]}%";?>
</td> 

【讨论】:

  • 我现在无法测试,明天再测试,如果其他 2 个条件也添加到上面的代码中会很棒,因为将来的值可以改变。
猜你喜欢
  • 2021-03-30
  • 1970-01-01
  • 1970-01-01
  • 2017-07-10
  • 1970-01-01
  • 2016-05-27
  • 2019-08-24
相关资源
最近更新 更多