0

我想写一些文本Year: X | percentage: $percentage%,其中X基于$year.

$year可以20102011……还可以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%";

所以我想知道:我们怎样才能让这段代码更短更清晰?

注意我发布了我自己的答案,因为我想分享我花了一些时间研究它后发现的方式。无论如何,我看到还有其他看起来相当不错的。

4

4 回答 4

3

可以这样做:

echo "Year: ". ((0==$year) ? "All" : $year) ." | Percentage: $percentage%";
于 2013-02-19T12:54:55.737 回答
2

可能不是对您问题的直接回答,但恕我直言,您应该执行以下操作:

$renderedYear = $year;
if ($year == 0) {
    $renderedYear = 'All';
}

echo 'Year: ' . $renderedYear . ' | Percentage: ' . $percentage . '%';

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

此外,您可能想要使用*printf.

于 2013-02-19T13:00:02.093 回答
1

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

echo sprintf("year: %s | Percentage: %s %%", ($year == 0) ? "All" : $year, $percentage);
于 2013-02-19T12:59:59.950 回答
1

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

echo "Year: ". (!$year ? "All" : $year) ." | Percentage: $percentage%";
于 2013-02-19T13:12:45.183 回答