7

次のブール式は PHP でどのように記述しますか。

$foo = "";
if($var==TRUE){
    $foo = "bar";
}

また

if($var==TRUE){
    $foo = "bar";
}else{
    $foo = "";
}

また

$foo = ($var==TRUE) ? "bar": "";
4

6 に答える 6

8

まずtrue、定数ではなく、トークンなので、大文字にしないでください(一部の標準ではそうなっていることは知っていますが、意味がわかりにくいと思います)...

$var == true次に、内で冗長な比較を行う必要はありませんif。これはif ($var) {(二重==比較の場合。同一の比較===は明示的である必要があります)とまったく同じです。

第三に、私は事前初期化を好みます。それで:

$foo = '';
if ($var) {
    $foo = 'one status';
} else {
    $foo = 'another status';
}

elseブランチが必要ない場合は、削除するだけです。変数を初期化するように強制し、ブランチの1つで変数を初期化するのを忘れる場合を防ぐため、事前初期化をお勧めします。さらに、後で関数を読むために戻ったときに、タイプのヒントが表示されます...

そして、そのような単純な分岐の場合、三項構文を使用することは問題ありません。より複雑なロジックがある場合は、私は近づかないでしょう:

$foo = $var ? 'bar' : '';
于 2010-08-18T16:05:36.123 に答える
5

それらのすべてが機能します。好みです。最初の例のように、最初に変数を初期化することを検討します。しかし、この単純なものについては、私の本では3番目のオプションで問題ありません。

また、$var が単なるブール値である場合、3 番目はそれほど冗長である必要はありません。

$foo = $var ? "bar" : "";
于 2010-08-18T16:03:43.773 に答える
1

私は最初のもの (ブール値の冗長なテストを除く) を好みます。これは、言語間で一貫して機能するためです。特に、変数を設定する前に変数を宣言 (およびおそらく型付け) する必要がある言語で動作します。
ジャワ:

String foo = "";
if (var) {
  foo = "Something";
}

JavaScript または JavaFX:

var foo = "";
if (var) {
  foo = "Something";
}

3番目
の形式も使用できますが、条件 (または代入) が複雑な場合は、少し読みにくくなります。

于 2010-08-18T16:27:26.720 に答える
1

私は最初のものが好きです:

$foo = "";
if($var==TRUE){
    $foo = "bar";
}

明快で簡潔で読みやすいからです。

于 2010-08-18T16:04:09.467 に答える
0

あまり重要ではありません。変数が常に初期化されることがわかるように、elseifがたくさんある場合は最初のものが好きです。しかし、それは本当に好みの問題です。

引用符のように、私はphpで単一のものを使用するのが好きです。正当な理由はありません:)

于 2010-08-18T16:04:21.760 に答える
0

よくあることですが、正しい答えは「場合による」です。この場合、

if ($var==TRUE) $foo = "bar";
else $foo = "";

非常に明確です。しかし、あなたの文脈は何ですか?

一般に、3 番目のオプションである 3 番目の演算子は、非常に読みにくくなるため、細心の注意を払って使用する必要があります。

ただし、コードが何をするかよりも、コードに何を意味させたいかという観点から考えてください。$foo を「通常の」値に設定してからオーバーライドしますか? それとも、$var が何であるかに依存する何かに設定したいですか?

変更すると便利だと思うこと、それはあなたが直接尋ねるものではありませんが、似ていますが、これは、から

function func() {
    ...
    if ($condition) {
        do plenty
        of things
    }
    else {
        do plenty
        of things
    }
}

つまり、私は一般的に次のように変更します。

function func() {
    ...
    if ($condition) {
        do plenty
        of things
        return;
    }
    do plenty
    of things
}

それは一般的に理にかなっています。

「私のコードについて何も知らない人がそれを読んだら、彼はそれを理解するでしょうか?それとも彼女でしょうか?」と自問してみてください。

于 2010-08-18T16:12:33.563 に答える