4

私は、PHP の変数を false に初期化し、後で任意の (文字列、ブール値、浮動小数点) 値を適用する習慣があります。

どちらが良いと思いますか?

$name = false;
if (condition == true) {
    $name = $something_else;
}

if ($name) {  …do something…  }

対。

$name ='';
if (condition == true) {
    $name = $something_else;
}

if (!empty($name)) {  …do something…  }

どちらがパフォーマンスを向上させる可能性があると思いますか? どの方法を使用しますか?

4

5 に答える 5

5

一見すると、それで十分$condition==trueなので、あなたは無意味です。$condition

2番目-どのタイプが変数になるかわからないが、それを初期化したい場合(それは-実際-良い習慣です)、使用null-false特定のデータ型を指しているので-boolデータ型ですが、それは正しくありません。あなたのコードを読む人は混乱するかもしれません。

于 2013-11-11T09:44:28.060 に答える
3

どちらの値''falseも意味があります。

nullデフォルト値として使用することをお勧めします。それは実際には何の「意味」もありません(そしてすべきではありません)。

is_null($var)これにより、何かが実際に変数に値を設定することを確認するためにテストすることもできます。

于 2013-11-11T09:44:21.233 に答える
1

ここを見てください基本的なphpベンチマーク.私は通常nullを使用します。ここでも知っておく必要があります。

于 2013-11-11T09:49:55.457 に答える
0

ブール値を与える方が良いと思います。非常に強力なシステムで実行されているコードを比較しても、大きな違いはありません。

ただし、システムのパフォーマンスに関しては、使用しているデータ型のサイズにすべて依存します。boolean は 1 ビットのデータを使用します。そのため、より便利に使用でき、高速でもあります。

他の回答に追加して、null を使用することをお勧めします。

于 2013-11-11T09:47:17.597 に答える
0

上記の2つの選択肢に関係なく、ifステートメントのパフォーマンスは、その条件に予測可能なパターンがあるかどうか、つまりBRANCH PREDICTIONに依存すると思います。条件が常に真または常に偽の場合、つまり予測可能な場合、プロセッサの分岐予測ロジックがパターンを取得します。一方、プロセッサが状態を予測できない場合は、パフォーマンスに影響を与える可能性があります。

あなたのコードについて話すとき、私が考えることができる最適化は

  $name = false;// i dont think u should predeclare the 'name' variable 
   //as it is dependent on the if condition.so if the condition fails then
  //the $name will be   of no use. 
    if (condition) {
        $name = $something_else;
    }

    if ($name) //this condition will only be executed 
   // when $name is true so why predeclare $name.
    {  …do something…  
    }
于 2013-11-11T09:50:39.843 に答える