在echo语句中添加三元运算符


Adding ternary operator in echo statement

我在php脚本中使用这个echo语句,它可以很好地进行

  echo "<li class='"ui-state-default'" id=ID_$this->id>$this->course_name <i class='"fa fa-bars'" style='"font-size:0.7em;color:#cccccc;float: right;'"></i> </li>";

现在我想把这个三元语句添加到li标签中

 (($benchmark>$thisUser)? style="color:red":"")

本质上是在IF条件下将颜色变成红色。。。现在,它只生成代码。。。。有人知道这应该如何恰当地融入echo语句中吗?感谢

我建议您将代码切成块,以使其更具可读性(利用HTML将多个空格和/或换行符视为唯一空白的事实)。

此外,正如altready其他人所建议的那样,对于这种特殊的情况,为了可读性,最好将三元运算分离。

$color = $benchmark->$thisUser ? '#cccccc' : 'red';
echo "
<li class='ui-state-default' id='ID_$this->id'>
    $this->course_name
    <i class='fa fa-bars' style='font-size:0.7em; float: right; color:$color;'></i>
</li>
";

如果在回声中包含三元运算,它也会起作用,但看起来不太可读

echo "
<li class='ui-state-default' id='ID_$this->id'>
    $this->course_name
    <i class='fa fa-bars' style='font-size:0.7em; float: right; color:" . ($benchmark->$thisUser ? '#cccccc' : 'red') . ";'></i>
</li>
";

请注意,在这种情况下,您必须将三元运算包装在括号之间,否则串联将中断。

这不是一个有效的PHP语句:

style="color:red"

你可能想把整件事做成一个字符串:

($benchmark>$thisUser) ? 'style="color:red"' : ''

我不会在echo语句中放入三进制。只需使用一个变量。。。

$liStyle = ($benchmark>$thisUser) ? 'style="color:red"' : '';
echo "<li class='"ui-state-default'" $liStyle id=ID_$this->id>$this->course_name <i class='"fa fa-bars'" style='"font-size:0.7em;color:#cccccc;float: right;'"></i> </li>";