1

if ステートメントの大きなセットがあり、そのうちの 1 つが true の場合、次の if ステートメントをテストする必要はありません。

これを行う最善の方法が何であるかはわかりません。

関数、スイッチ、または while ループを作成する必要がありますか?

連続する各 if ステートメントは異なり、事前に作成された入力値があります。これをよりよく説明するために、簡単な例を作成してみます。

$total = ($val1+$val2+$val3)/$arbitaryvalue
if($total > 2){//Do Something
}

$total = ($val1+$val2)/$anothervalue
if($total > 2){//Do Something different
}
4

5 に答える 5

2

前のifステートメントのelse内にそれらをポップします。これは、最初の条件がfalseと評価された場合にのみ実行されることを意味します。ifステートメントがたくさんある場合、これは厄介になりますが、質問の例は要件の規模を表していますか?

$total = ($val1+$val2+$val3)/$arbitaryvalue
if($total > 2){//Do Something
}
else
{

    $total = ($val1+$val2)/$anothervalue
        if($total > 2){//Do Something different
    }

}
于 2012-07-12T21:52:14.530 に答える
1
if ( condition ) {

}

else if ( another_condition ) {

} 

... 

else if ( another_condition ) {

} 

于 2012-07-12T21:52:49.517 に答える
0

ループを使用するかどうかの決定は、実際の例によって異なります。$ totalの設定方法にパターンがある場合は、ループを使用できます。そうでない場合は、次のifステートメントを連続して実行する方がよい場合があります。

if(($val1+$val2+$val3)/$arbitraryvalue > 2){
   //Do Something
}
else if(($val1+$val2)/$anothervalue > 2)
{
   //Do something different
}

ただし、$ val1 + $val2と$anothervalueの部分にパターンがある場合は、ループの方が適切な解決策になる可能性があります。私の意見では、あなたの決定は、パターンが理にかなっているかどうかにも左右されるべきです。

于 2012-07-12T21:55:36.367 に答える
0

使用elseするのは有益ではなく、維持するのが難しいため、関数を使用することをお勧めします。

を使用して条件が満たされると、いつでも関数を終了できるため、関数はより理想的ですreturn

関数内から呼び出された場合、return ステートメントは現在の関数の実行を直ちに終了し、その引数を関数呼び出しの値として返します。

以下に、デモンストレーション用にダミー値が設定されたサンプル関数を示します。

<?php

function checkConditions(){   
    $val1 = 5;
    $val2 = 10;
    $val3 = 8;

    $arbitaryvalue = 5;
    $anothervalue = 4;

    $total = ($val1+$val2+$val3) / $arbitaryvalue;

    if($total > 2){
        return 'condition 1';
    }  

    $total = ($val1+$val2) / $anothervalue;
    if($total > 2){
        return 'condition 2';
    } 

    return 'no conditions met';
}

echo checkConditions();
?>

コメント化されたコードに示されているようなアクションを実行したい場合は、関数から戻る前に適切なアクションを実行できます。

于 2012-07-12T22:05:12.870 に答える
0

Ben Everard の言うことは正しい方法ですが、他にも多くの解決策があります。

$conditions = array(
  array(
    'condition' => ($val1+$val2+$val3)/$arbitaryvalue,
    'todo' => 'doSomething',
  ),
  array(
    'condition' => ($val1+$val2)/$arbitaryvalue,
    'todo' => 'doSomethingDifferent',
  ),
  // ...
);

foreach ($conditions as $item)
{
  if ($item['condition'])
  {
    // $item['todo']();
    call_user_func($item['todo']);
    break;
  }
}


function doSomething()
{
  // ...
}

function doSomethingDifferent()
{
  // ...
}
于 2012-07-12T22:08:19.583 に答える