0

に含まれる値に基づいて、Year: X | percentage: $percentage%テキストを書きたいと思います。X$year

$year20102011...だけでなく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 に答える