我想写一些文本Year: X | percentage: $percentage%
,其中X
基于$year
中包含的值。
$year
可以是2010
、2011
。。。而且还有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);