我想写一些文字Year: X | percentage: $percentage%
,其中X
基于$year
中包含的值。
$year
可以是2010
,2011
...还可以是0
。在这种情况下,我们必须写出"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%";
所以我想知道:我们怎样才能使这段代码变得更短更清晰?
注意我发布了自己的答案,因为我希望在花一些时间来分享我找到的方式。无论如何,我看到其他的看起来相当不错。
答案 0 :(得分:3)
可以这样做:
echo "Year: ". ((0==$year) ? "All" : $year) ." | Percentage: $percentage%";
答案 1 :(得分:2)
可能不是你问题的直接答案,但恕我直言,你应该这样做:
$renderedYear = $year;
if ($year == 0) {
$renderedYear = 'All';
}
echo 'Year: ' . $renderedYear . ' | Percentage: ' . $percentage . '%';
总是更喜欢可读性而不是代码短缺。屏幕上的像素比调试时间便宜。
也可以使用*printf
。
答案 2 :(得分:1)
我会使用sprintf()
设置样式,因为它更容易阅读。
echo sprintf("year: %s | Percentage: %s %%", ($year == 0) ? "All" : $year, $percentage);
答案 3 :(得分:1)
我很抱歉,如果这不起作用(现在无法测试),但在C(有点类似于php)你可以直接否定数字,我相信你也可以使用:
echo "Year: ". (!$year ? "All" : $year) ." | Percentage: $percentage%";