1

私はこの単純なifコードを持っています:

esleif で実行するのと、2 つの別々の if を実行するのとでは、どちらが優れていますか?

if(is_home() && $currentpage == ''){ 
    $catname = 'cars';
} elseif(is_home() && $currentpage != '' && is_page_template('models.php')){ 
    $catname = 'newcars';
} 

2 つの別々の if 節:

if(is_home() && $currentpage == ''){ 
    $catname = 'cars';
} 
if(is_home() && $currentpage != '' && is_page_template('models.php')){ 
    $catname = 'newcars';
} 

if の順序は重要ですか? 最初の前に2番目を配置できますか? 問題は、php が条件をより具体的なものからより一般的なものへとどのように扱うかということだったはずです。常により具体的なものから始めて、一般的なものへと進んでいくべきですか? またはphpはそれらをソートできますか?

2番目のバージョンは、ifがたくさんあるので、私にとっては簡単です:)

4

4 に答える 4

5

これは、必要な動作によって異なります。

を使用するelseifと、最初に一致したブロックのみが実行されます。

$foo = $bar = true;
if($foo) { /* executed */ }
elseif($bar) { /* not executed */ }

個別のif句を使用すると、一致するすべてのブロックが実行されます。

$foo = $bar = true;
if($foo) { /* executed */ }
if($bar) { /* also executed */ }

条件が異なる場合、つまり 1 つだけが真である場合、それは実際には問題ではありません。ただし、 を使用elseifすると、1 つの条件が true と評価されるとすぐにそれ以上の条件をチェックする必要がないため、無駄なチェックを回避できます。

于 2012-08-07T23:19:20.003 に答える
3

スクリプトの最適化のために、余分な不要な条件を実行しないように、elseifs をお勧めします。

可能であれば、switch/case ステートメントの使用をお勧めします (ここでは、単一の変数の値を確認できます)。整理整頓の観点から、クリーンでメンテナンスが容易です。

複数の if ステートメント (elseif ステートメントの代わりに) の問題の 1 つは、デバッグの問題がより複雑になることです。2 番目のステートメントが最初のステートメントを上書きしていないこと、または条件付きロジックがすべてのステートメントに対して正しいことをどのように確認できますか? 複数の if を使用すると、ある条件が別の条件をオーバーライドする可能性が高くなります。これらの if ステートメント内に複数の変数を追加し始めると、頭が痛くなり始めます。

于 2012-08-07T23:19:57.867 に答える
1
if (is_home()) { 

    if ($currentpage == '') {

        $catname = 'cars';
    }
    else if (is_page_template('models.php')) {

        $catname = 'newcars';
    }       
}
于 2012-08-07T23:19:29.767 に答える
1

私は一緒に行きます、

if(is_home()) {
    if($currentpage == '') {
        $catname = 'cars';
    }
    elseif(is_page_template('models.php')) { 
        $catname = 'newcars';
    }
} 
于 2012-08-07T23:26:16.707 に答える