If-else语句只在一行中用于简单文本


If-else statement in just one line for simple text

我想写一些文本Year: X | percentage: $percentage%,其中X基于$year中包含的值。

$year可以是20102011。。。而且还有CCD_ 7。在这种情况下,我们必须写出单词"All";否则,就是年份本身。

Year: 2011 | percentage: 2%    // case $year not 0
Year: All | percentage: 2%     // case $year == 0

这个代码似乎很长,需要什么:

echo "year: ";
if ($year==0)
     echo "All";
else
     echo $year;
echo " | Percentage: $percentage%";

所以我想知道:我们如何才能使代码更短、更清晰?

注意,我发布了自己的答案,因为我想分享我花了一段时间研究后的发现。无论如何,我看到还有其他答案看起来很好

您可以使用三元运算符:

echo ( condition ? "if condition true" : "otherwise")

对于这种特定情况:

echo "Year: ". ((0==$year) ? "All" : $year) ." | Percentage: $percentage%";

可能不能直接回答您的问题,但IMHO您应该做一些类似的事情:

$renderedYear = $year;
if ($year == 0) {
    $renderedYear = 'All';
}
echo 'Year: ' . $renderedYear . ' | Percentage: ' . $percentage . '%';

总是喜欢可读性而不是简短的代码。屏幕上的像素比调试时间便宜得多。

此外,您可能希望使用*printf而不是串联。

如果这不起作用(现在无法测试),我很抱歉,但在C(有点类似于php)中,你可以直接否定数字,我相信你也可以使用:

echo "Year: ". (!$year ? "All" : $year) ." | Percentage: $percentage%";

我会使用sprintf()来设计它的样式,因为它更容易阅读。

echo sprintf("year: %s | Percentage: %s %%", ($year == 0) ? "All" : $year, $percentage);